mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Dev Toolsevaluationupdated 27 Aug 2026

fhevm review

FHEVM is Zama's framework for running smart-contract logic over encrypted values on EVM-compatible blockchains. Solidity contracts record symbolic operations on the host chain, while an off-chain coprocessor performs the encrypted computation and a key-management system controls decryption.

-7 / 4dstars / 7d
Verdict

Our FHEVM install pulled 2,587 packages and 2,071 MB, then its test command failed in 5 seconds because Bun was absent and npm audit reported 108 known vulnerabilities. That is enough friction to reject it for a casual private-token experiment, especially when commercial use needs a separate patent license. Consider FHEVM when encrypted EVM state is the actual product requirement and your team can own the coprocessor, KMS, relayer, upgrade path, and dependency review.

We ran it

Lab card: what happened when we ran fhevmScreenshot of fhevm (github.com/zama-ai/fhevm)
Install✓ · 154s2587 packages · 2071 MB
Buildn/ano build script
Tests✗ · 5sran, no count parsed
Known vulns1083 critical · 43 high · 38 moderate · 24 low (npm audit)
Repo3828 files~1,029,780 lines of source · 110.6 MB · 64 CI workflows

Answers from our run

Does fhevm build from source?

Dependencies installed in 154 seconds (2587 packages), and the project has no separate build step. We cloned commit 1118538 into a clean Debian container with 3 CPUs and no project-specific setup.

Do fhevm's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does fhevm have known vulnerabilities in its dependencies?

npm audit flagged 108 known advisories in the dependency tree, including 3 critical at the time of our run.

Who should not use fhevm?

Companies assuming the open-source license covers commercial deployment: the README says commercial use also requires Zama's paid patent license.

What are the alternatives to fhevm?

Aztec, Microsoft SEAL, Fhenix CoFHE. Our FHEVM install pulled 2,587 packages and 2,071 MB, then its test command failed in 5 seconds because Bun was absent and npm audit reported 108 known vulnerabilities.

Setup1/52,071 MB install; no build target; test runner missing
Docs4/5Architecture and licensing are clear; root setup is indirect
Community5/524,825 stars with same-day pushes and issue activity
Maturity3/5v0.14.0 ships upgrades, but integration boundaries keep moving

Discussed on

  1. hnFhEVM whitepaper (homomorphic encryption for blockchain) [pdf]3 points

Who it’s for

Protocol teams building confidential transfers, auctions, voting, identity, or game logic on EVM chains.
Solidity developers who can work with an off-chain coprocessor, relayer, gateway contracts, and KMS.
Infrastructure teams already comfortable operating Rust services, Helm charts, databases, object storage, and blockchain nodes.
Researchers and prototype builders who accept the BSD-3-Clause-Clear terms for noncommercial work.

Who it’s NOT for

Companies assuming the open-source license covers commercial deployment: the README says commercial use also requires Zama's paid patent license.
Teams wanting a contract-only privacy library: the documented stack includes host and gateway contracts, a Rust coprocessor, KMS connector, relayer behavior, and Helm deployment.
Node-only development images without Bun: the root test script enters test-suite/fhevm and our run stopped with bun: not found.
Foundry-first teams expecting documented support today: the README labels Foundry compatibility as coming soon, which is an aspiration rather than current support.
Mainnet integrators who need self-hosted decryption working without protocol-version investigation: issue 3573 reports a v0.14.0 relayer blocked because the mainnet KMS context was not activated.

Setup reality

Our sandbox installed 2,587 npm packages in 154 seconds and used 2,071 MB. The root had no build script or target, so the build step was skipped. Tests failed with exit code 127 after 5 seconds because the script ran bun run test and the Node 22 image had no bun command. npm audit reported 108 known vulnerabilities: 3 critical, 43 high, 38 moderate, and 24 low.

A useful deployment needs EVM RPC access, host and gateway contracts, the coprocessor, relayer, KMS integration, databases, and the keys or cloud credentials those services use. The included Helm charts address orchestration, not the initial trust and key-management design.

The checkout was 110.6 MB with 3,828 files and about 1,029,780 source lines. It is an npm-workspace monorepo with Rust and Solidity components. Our scan found 64 CI workflows, no Dockerfile, and no tests directory, although the repository has a test-suite path.

Encrypted state requires contracts plus an off-chain compute stack

FHEVM lets Solidity code operate on encrypted values without exposing the underlying data on the host chain. Contracts record symbolic FHE operations, and a coprocessor performs the costly encrypted computation away from the EVM. Gateway and host contracts coordinate requests, while a KMS connector participates in key handling and decryption. This split supports confidential balances, bids, votes, and game state, but it creates more moving parts than a normal contract deployment.

The repository is organized around that protocol, not one library. It contains gateway contracts, host contracts, a Rust coprocessor, KMS integration, Helm charts, golden container images, SDK code, and an end-to-end test suite. The README says encrypted integers can reach 256 bits and lists arithmetic, comparisons, Boolean operations, and conditional selection. Developers still define access control in Solidity, since encryption does not decide who may decrypt a result.

The root npm install is 2,071 MB before protocol services start

Our clean install added 2,587 packages in 154 seconds and occupied 2,071 MB. That is only the JavaScript workspace dependency layer. The checkout itself had 3,828 files, about 1,029,780 lines of source, and 110.6 MB before installation. Rust crates, Solidity toolchains, images, databases, chain nodes, and deployed services add separate costs that our npm measurement does not include.

The monorepo had 64 CI workflow files, evidence of a large release and integration matrix. Our scan found no Dockerfile and no directory literally named tests, while the documented tree does contain test-suite and golden container images. Those details are compatible: the signal scanner checks exact conventional paths, while this repository uses its own layout. Buyers should read the actual workflows and component instructions instead of judging readiness from folder names.

What happened when we ran it

In our sandbox, npm installation succeeded in 154 seconds with 2,587 packages. The root package had no build script or target, so there was no build to run. We used commit 1118538 in an unprivileged Node 22 Debian container with 3 CPUs, 8 GB of RAM, and no secrets. Skipping the build is a repository result, not a successful compilation of the Rust, Solidity, or TypeScript components.

The test command failed with exit code 127 after 5 seconds. It changed into test-suite/fhevm and called bun run test; the shell answered bun: not found. The log does not show whether the tests themselves pass once Bun is installed. It shows that a fresh Node 22 environment, after the root npm install, still lacks a required test runner that the package script assumes.

Our npm audit found 108 known vulnerabilities: 3 critical, 43 high, 38 moderate, and 24 low. That scan covers the installed npm dependency tree, not Rust crates or deployed services, and it does not prove every advisory is reachable. The counts are too large to waive away. A team evaluating FHEVM should triage each critical and high finding against the exact workspace and deployment bundle it will ship.

v0.14.0 changes decryption and upgrade contracts

The latest GitHub release was v0.14.0, published August 14, 2026. Its notes describe KMS context and epoch rotation, unified user decryption, confidential bridging, coprocessor migration work, and SDK compatibility changes. The upgrade section is substantial: decryption permits move to signDecryptionPermit(), durations change from days to seconds, low-level SDK exports are removed, and contract storage gains new protocol state.

Those changes tell an operator what maturity means here. The project has release tooling and migration paths, yet protocol upgrades span contracts, SDKs, the KMS connector, relayer behavior, and coprocessor state. Version matching is part of normal operation. Pinning only the JavaScript package or only the contracts is insufficient when the services disagree about context IDs, permits, or key epochs.

Mainnet key activation can block an otherwise healthy relayer

Issue 3573 reports an integrator running a self-hosted v0.14.0 relayer against Ethereum mainnet. According to the report, listeners and the database were healthy and symbolic FHE transactions worked, but getCurrentKmsContextAndEpoch() reverted. The relayer could not initialize its v2 key URL, leaving input proofs and decryption unavailable. The issue asks which commit matches the active mainnet protocol state.

That report does not establish a universal outage, and it does not say the architecture is broken. It does show the cost of a versioned, multi-service protocol: individual health checks can pass while a required cross-component capability is unavailable. Before committing to mainnet, test encryption, proof creation, user decryption, public decryption, key rotation, and upgrade rollback against the exact hosted or self-hosted components you will operate.

Commercial use requires a separate patent decision

The code uses BSD-3-Clause-Clear, but the README adds an important limit. Zama says development, research, prototyping, and experimentation are free under that license, while commercial use of its open-source code requires a commercial patent license. The repository API therefore labels the license as Other with no SPDX assertion. Legal review belongs near the start of evaluation, before an architecture depends on FHEVM-specific contracts and services.

Contributions also have a gate: the README asks prospective contributors to contact Zama, sign its contributor license agreement, and become approved before submitting pull requests. GitHub showed 24,825 stars, 121 open issues and pull requests combined, and a push on August 27, 2026. The project is active. Its technical and licensing commitments are simply much larger than installing an ordinary Solidity package.

Alternatives

ProjectWhat it isPick it when
AztecA privacy-focused blockchain stack built around zero-knowledge execution rather than FHE on an EVM host.pick this instead when a dedicated private execution environment fits better than encrypted computation attached to EVM contracts.
Microsoft SEALA general homomorphic-encryption library for applications that do not need a blockchain protocol.pick this instead when encrypted computation is required but Solidity, consensus, and on-chain composability are not.
Fhenix CoFHEAn FHE-oriented approach for confidential smart-contract applications in the EVM ecosystem.pick this instead when you want to compare another EVM-facing FHE architecture and its operator model.

What people are saying

  1. [velocity-scout] zama-ai/fhevm

Sources

  1. FHEVM README
  2. FHEVM v0.14.0 release notes
  3. GitHub repository facts
  4. Root npm package manifest
  5. Issue 3573: mainnet KMS context activation

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →