CipherOps Docs

Everything you need to understand, test, and verify CipherOps.

CipherOps is a Zama-native interface for discovering confidential token wrappers, testing the ERC-7984 lifecycle, and running private token operations through TokenOps. All flows are verified on Ethereum Sepolia.

01 — What is CipherOps?

What is CipherOps?

CipherOps is a browser-based interface built on Zama fhEVM that demonstrates the full confidential token lifecycle. It connects to Zama's official on-chain wrapper registry and exposes every verified ERC-20 ↔ ERC-7984 pair alongside interactive flows for wrapping, revealing, and unwrapping.

On top of the registry lifecycle, CipherOps integrates TokenOps to provide three private token operation flows: Confidential Disperse (private multi-recipient payouts), Confidential Airdrop (encrypted claim campaigns), and Confidential Vesting (time-locked encrypted schedules). All flows are verified on Sepolia testnet.

02 — What is Zama?

What is Zama?

Zama enables confidential smart contracts using Fully Homomorphic Encryption (FHE). FHE allows encrypted values to be processed on-chain without ever revealing the plaintext — computations happen on the ciphertext directly.

  • ·In CipherOps, token balances and payout amounts are stored as FHE-encrypted values on-chain.
  • ·Public observers can see that a transaction occurred but cannot see the encrypted amounts.
  • ·Only the token holder can decrypt their own balance by authorizing a one-time EIP-712 request.
  • ·The decryption happens locally in the browser — no amount is sent to a server.

CipherOps uses Zama's @zama-fhe/relayer-sdk and @zama-fhe/sdk for FHE encryption and decryption, and @tokenops/sdk for private token operation contracts.

03 — Core Concepts

Core Concepts

ERC-20

Standard public token. Balances visible to all on-chain.

ERC-7984

Confidential token standard by Zama. Balances are FHE-encrypted.

Wrapper Registry

Zama's official on-chain contract mapping ERC-20 ↔ ERC-7984 pairs.

FHE-encrypted amount

A ciphertext stored on-chain. Only the authorized holder can decrypt it.

Private Reveal

EIP-712 authorization flow that lets a holder decrypt only their own balance, locally.

Zama Gateway

The FHE compute layer that processes encrypted operations like public decrypt for Unwrap.

TokenOps

SDK + deployed contracts for private token operations: Disperse, Airdrop, Vesting.

Sepolia testnet

Ethereum testnet where all CipherOps flows are verified. Mainnet registry is read-only.

04 — Routes

Routes Map

RoutePurposeStatus
/Product showcase — hero, lifecycle strip, feature cardsLive
/registryFull ERC-7984 lifecycle — Faucet, Wrap, Reveal, UnwrapVerified
/operationsTokenOps Disperse — private multi-recipient payoutsVerified
/airdropTokenOps Airdrop — encrypted campaign, claims, revealVerified
/vestingTokenOps Vesting — manager, schedules, recipient claimVerified
/recipientRecipient education — how to reveal an encrypted payoutGuide
/verificationVerified receipts, privacy guarantees, proof centerGuide
/developersDeveloper implementation guide — packages, snippets, routesGuide
/docsProduct documentation — this pageLive

05 — Registry Lifecycle

Registry Lifecycle

All steps verified on Ethereum Sepolia against official Zama deployed contracts.

1

— Discover

Browse the official Zama wrapper registry. Every listed pair maps a public ERC-20 to its ERC-7984 confidential counterpart.

2

— Faucet

Call ERC20.mint(address, uint256) on the Zama Sepolia test token to get test assets.

3

— Approve

Call ERC20.approve(wrapperAddress, amount) to allow the wrapper to spend your tokens.

4

— Wrap

Call wrapper.wrap(address, amount) to seal ERC-20 into an FHE-encrypted ERC-7984 token.

5

— Private Reveal

Call confidentialBalanceOf to get the encrypted handle, then use EIP-712 user-decrypt via the Zama relayer to view your balance privately.

6

— Unwrap

Call wrapper.unwrap(from, to, encryptedAmount, inputProof). The Zama Gateway performs public decrypt.

7

— Finalize

Call wrapper.finalizeUnwrap(requestId, cleartext, proof) after the Gateway resolves. ERC-20 is released.

06 — TokenOps Disperse

TokenOps Confidential Disperse

The sender creates a private payout campaign and distributes ERC-7984 tokens to multiple recipients. Individual amounts are FHE-encrypted before the transaction is broadcast — public observers see only the recipient list, not the amounts. Recipients can import recipients via CSV, and each recipient can reveal their own balance privately through the Registry.

Flow

  1. 1.Register wallet for the token (one-time)
  2. 2.Approve Disperse singleton as ERC-7984 operator
  3. 3.Paste CSV or enter recipients + amounts
  4. 4.Submit Disperse — amounts encrypted by Zama FHE SDK
  5. 5.Recipient reveals balance via Registry → Private Reveal

07 — TokenOps Airdrop

TokenOps Confidential Airdrop

Admin deploys and funds a confidential airdrop clone. For each recipient, the admin produces an encrypted claim JSON (per-recipient proof bound to that wallet). Recipients paste the JSON and call claim. Amounts stay encrypted on-chain until Private Reveal.

Flow

  1. 1.setOperator(factory, deadline) on the ERC-7984 token
  2. 2.createAndFundConfidentialAirdrop → campaign deployed + funded in one tx
  3. 3.Issue Claims: encryptUint64 per recipient + signClaimAuthorization
  4. 4.Recipient pastes claim JSON + calls useClaim()
  5. 5.Recipient reveals balance via Registry → Private Reveal

08 — TokenOps Vesting

TokenOps Confidential Vesting

Admin deploys a per-token vesting manager from the factory, then creates time-locked schedules with FHE-encrypted allocations. Recipients auto-discover their schedules and claim as tokens vest. No per-recipient admin signature required — simpler than Airdrop.

Flow

  1. 1.createManager (factory, token) → deploy manager clone
  2. 2.setOperator(manager, deadline) on the ERC-7984 token
  3. 3.createVesting(params, encryptedAmount) per recipient
  4. 4.Recipient: useRecipientVestings → discover vestingIds → useClaim
  5. 5.Recipient reveals vested balance via Registry → Private Reveal

09 — Verified Addresses

Verified Contracts (Sepolia)

All links open Sepolia Etherscan. No custom contracts were deployed by CipherOps.

10 — Privacy Model

Privacy Model

Public (visible on-chain)

  • ·Transaction hash
  • ·Contract addresses
  • ·Number of recipients
  • ·Timing of operations

Private (encrypted on-chain)

  • ·Individual payout amounts
  • ·Vesting allocation amounts
  • ·Airdrop claim amounts
  • ·Confidential token balances

How Private Reveal works

  1. 1.Holder calls confidentialBalanceOf → receives a bytes32 encrypted handle
  2. 2.Holder signs a one-time EIP-712 authorization (wallet prompt, local only)
  3. 3.Zama relayer decrypts the handle using the holder's public key
  4. 4.Plaintext balance appears only in the holder's browser — never sent to a server

11 — Limitations

Limitations

  • ·All write flows (Faucet, Wrap, Reveal, Unwrap, Disperse, Airdrop, Vesting) are Sepolia-only in the current UI.
  • ·Ethereum Mainnet registry is read-only — wrapper pair discovery only.
  • ·Private Reveal and Unwrap require a standard EOA wallet (MetaMask). Smart-contract wallets may not support the EIP-712 signing flow.
  • ·FHE encryption and Private Reveal require connectivity to Zama's public Sepolia relayer (relayer.testnet.zama.org/v2). Relayer availability can affect these flows.
  • ·TokenOps production-scale batch flows (large Airdrops, many Vesting recipients) may benefit from server-side signing tooling.
  • ·CipherOps has not been audited as a production financial application. It is a developer reference and lifecycle demonstration.

12 — Quick Start

Quick Start

For testers

  1. 1.Open /registry
  2. 2.Connect MetaMask on Sepolia
  3. 3.Faucet — mint test ERC-20
  4. 4.Approve + Wrap into ERC-7984
  5. 5.Private Reveal — see your balance
  6. 6.Try Unwrap + Finalize
  7. 7.Try Disperse / Airdrop / Vesting at /operations, /airdrop, /vesting

For recipients

  1. 1.Receive a payout/claim/vesting tx from admin
  2. 2.Open /registry
  3. 3.Find the same ERC-7984 token pair
  4. 4.Click Private Reveal tab
  5. 5.Sign EIP-712 authorization in wallet
  6. 6.Your balance appears — visible only to you

13 — More Resources

More Resources

Ready to explore?

Every feature is live on Sepolia.