Skip to content

Build1 publisher3 min readPublished

The mint-creation opt-in decides which Solana tokens can ever go confidential

Helius's Rings demo runs on devnet and can hide the transaction graph; the Token-2022 extension has been live on mainnet since June and hides only the amount. Which one you can use is settled by the token issuer.

The Engineer · Build desk

Illustration accompanying The mint-creation opt-in decides which Solana tokens can ever go confidential

What happened

  • Helius posted a demo on September 7 presenting a confidential transfer on Solana as something a developer could do immediately.
  • The protocol behind that demo, Solana Rings, is Helius's own, built by the Light Protocol team it acquired in June, and it runs on devnet only.
  • The separate native feature, Token-2022's confidential transfer extension, was re-enabled on mainnet in June after five audits, following a year switched off.
  • The native design holds a balance as ciphertext on an ordinary token account and proves the arithmetic in zero knowledge, so the amount is hidden while the counterparties stay on the ledger.
  • Rings instead keeps encrypted notes in a Merkle tree owned by a Helius program, spending them with published nullifiers, which lets it hide sender and recipient as well as the amount.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • constraint Confidential mode on the native path is an issuer decision taken at mint creation, so a wallet or treasury team cannot add it to a token that is already circulating; someone has to mint a new one.
  • decision The choice is really about where the prover runs: your client across three transactions, or a Helius server in one, with the operational and trust consequences that follow.
  • cost Integrating the native extension puts key custody inside the wallet, an ElGamal keypair and an AES key per account, plus apply-instruction bookkeeping that plain SPL transfers never required.
  • exposure Anyone budgeting against the Rings demo is budgeting against a devnet program, while the only confidential transfer live on mainnet hides amounts and leaves the graph readable.

Token-2022 keeps confidential transfers in the mint extension set, and extensions are chosen when the mint is initialized [10]. The Solana documentation states the rule without hedging: "Most extensions can't be added after an account is initialized" [10]. A token already in circulation cannot grow a confidential mode, and a legacy SPL mint never can [10]. So any stablecoin that ends up supporting this either shipped with the extension or arrives as a new mint at a new address [11]. Rings has no such gate: it takes SOL and any SPL or Token-2022 mint [9].

On a mint that did opt in, the holder's side is bookkeeping. Configuring an account derives two keys the wallet has to keep: an ElGamal keypair for the ciphertext balance, and an AES key for a private copy the owner can decrypt quickly [12]. Incoming funds land in a pending balance and become spendable only when the owner sends an apply instruction, which is what stops a payer from invalidating a transfer you are halfway through proving [13]. A counter limits how many credits can stack up before you must apply, and the documented default is 65,536 [14].

The amount ceiling is 48 bits, because ElGamal decryption slows as the number grows [15]. That works out to 281,474,976,710,655 base units, or roughly 281.47 million whole tokens per transfer on a six-decimal mint [17]. Comfortable for payments. A settlement flow larger than that per instruction has to split it.

Where the proof gets built is the other decision. Native proofs are built by your client and cost three transactions per transfer; the Rings demo needs one, because a Helius server builds the proof [7]. Three-to-one on transaction count [18] is a real ergonomics gap, and it is bought with dependencies: a program Helius deployed, its own state tree and key material, a registry to find recipients, and an indexer to read your own balance [16]. The native design keeps every existing account, wallet address and token standard, and in exchange cannot hide who paid whom [16].

For the devnet ergonomics to carry into production, the Helius program has to exist on mainnet, and as of the September 9 read it does not [8]. The proof server also has to be something you are willing to place in the payment path, which is a governance question rather than a benchmark.

One caveat covers all of the above: this is a single dev.to writeup's reading of the Helius documentation and source, the Solana and Anza docs, the audit records and mainnet itself, dated September 9, 2026 [4]. Its own framing is the right posture, that "a status that is true in September is a lie by November" [19]. Epoch 982 is the anchor for the native feature being live [8]. Check the chain against that number before anyone writes a roadmap on it.

What to watch

  • Whether the Helius-deployed Rings program moves from devnet beta to mainnet, and whether the proof server stays in the transfer path.
  • A new stablecoin mint shipping with the confidential transfer extension enabled at creation, since circulating mints cannot add it later.
  • Any change to the 48-bit amount cap or the 65,536 pending-credit counter default in the Token-2022 documentation.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories