fhevm-user-decryption
FHE User Decryption
Use this skill when building the flow that lets a user read their own encrypted onchain values (balances, scores, private state) through the browser. This is a purely off-chain read operation. No transaction is submitted, no gas is spent, and no state changes onchain.
When To Use
- Implementing balance display for confidential tokens
- Building any UI that shows a user their own encrypted onchain state
- Debugging "decryption failed" errors in the frontend
- Reviewing whether ACL grants are sufficient for user-facing reads
- Deciding between user decryption (read-only) and public decryption (state-changing)
Core Mental Model
User decryption is reencryption, not onchain decryption. The user signs a typed message (EIP-712), the relayer SDK uses this signature to reencrypt the handle's value under the user's public key, and the SDK decrypts it locally in the browser. No write transaction is
More from z-korp/fhevm-cookbook
fhevm-router
Routes Zama FHEVM tasks to the right official docs path and next step
11fhevm-testing
Use when writing, structuring, or debugging tests for FHEVM contracts. Covers mocked mode vs real protocol, Hardhat decrypt helpers, input encryption in tests, and the false-confidence gap between local and testnet behavior.
11fhevm-acl-lifecycle
Use when granting, auditing, or debugging ACL permissions on encrypted handles in FHEVM. Covers FHE.allow, FHE.allowThis, FHE.allowTransient, and the critical rule that new handles do not inherit prior persistent ACL grants.
11fhevm-control-flow
Use when replacing if/else, require, or any conditional logic that depends on encrypted values in FHEVM. Covers FHE.select as the inline branching primitive, fallback semantics on encrypted conditions, and async public decryption when logic must branch back to plaintext state.
11oz-utils-safemath
Use when you need overflow-safe encrypted arithmetic on euint64 values. Covers the OpenZeppelin FHESafeMath library (tryIncrease, tryDecrease, tryAdd, trySub), uninitialized-handle semantics, and when to prefer it over raw FHE.add / FHE.sub.
11fhevm-public-decryption
Use when implementing two-step public decryption for state-changing operations in FHEVM. Covers makePubliclyDecryptable, off-chain proof retrieval, onchain verification with checkSignatures, and the critical single-step unwrap bug.
11