FHE vs ZK: two kinds of blockchain privacy
Zero-knowledge proofs and fully homomorphic encryption are both called "privacy tech," but they solve different problems. Understanding the difference explains most of Celar's architecture.
ZK: prove without revealing
A zero-knowledge proof lets you compute on your own data locally and convince the chain the result is valid without revealing inputs. This is ideal for private payments — Zcash pioneered it, and Celar's shielded pool uses it. Its privacy is unconditional against the operator set: even if every validator colludes, a shielded transfer stays private.
FHE: compute on what stays hidden
ZK has a structural limit: it cannot give you shared private state — state that many users touch but nobody can read. A private orderbook, a shared encrypted pool balance, a sealed-bid auction: someone must compute over data that belongs to multiple parties at once. FHE does exactly that — validators and coprocessors evaluate contracts directly on ciphertexts, so the chain maintains state nobody, including its own operators, can read.
The trade each makes
| ZK (shielded pool) | FHE (encrypted state) | |
|---|---|---|
| Shared encrypted state | No — personal state only | Yes — the whole point |
| Trust assumption | None on operators (cryptography only) | Threshold committee guards the key |
| Programmability | Fixed circuits | General smart contracts |
| Failure mode | None from collusion | ≥ 79-seat coalition could decrypt |
Why Celar ships both
Because users shouldn't have to choose. Programmable confidentiality (FHE tier) when you need contracts on encrypted values; maximal, committee-independent privacy (ZK pool) when it matters most — selectable per transaction. The FHE tier's trust assumption is then engineered down aggressively: see threshold key management.