Verify, don’t trust. That is the philosophy that has been at the center of blockchain development for over a decade, underpinning all the work that was done around consensus, ZK, optimistic rollups and more. But one major issue with requiring public verifiability of state updates is that all onchain data needs to be publicly available, creating what seems like an impossible dilemma: either use a public blockchain and have no confidentiality, or use a private blockchain and have no verifiability. And while some ZK-based protocols have offered some degree of confidentiality, they lack the most essential feature that makes blockchains unique: composability.
To solve these problems, Zama created the fhEVM: a novel protocol leveraging FHE to enable confidential smart contracts on EVM chains:
Our first implementation, which was released a year ago, could process around two transactions per second, and required validators to run a modified version of the EVM that supports FHE operations. While the integration was easy for a new chain or rollup, it prevented existing chains such as Ethereum, Base or Solana from benefiting from FHE without a major upgrade and slowdown. Until now.
Today, we are announcing Zama’s most exciting product to date: the fhEVM coprocessor. It allows developers to build confidential smart contracts on any EVM chain, including those that don’t support FHE natively, without changing anything to the underlying protocol.
As a developer, you can already start building using our Sepolia coprocessor testnet, with Ethereum and many other ecosystems following soon.
We also made major performance improvements, and can now handle close to 20 transactions per second, ten times more than a year ago, and more than the average Ethereum throughput over the past 10 years. In other words, we could run Ethereum encrypted end-to-end. Our new architecture is in fact so scalable that we are confident we will enable hundreds, or even thousands, of FHE transactions per second in the near future, simply by adding more hardware.
To achieve this, we had to completely reinvent the fhEVM stack from the ground up, building on two core ideas: symbolic execution and threshold decryption.
The idea behind symbolic execution is that whenever a contract calls Zama’s TFHE library on the L1 to perform an FHE operation, the L1 itself doesn’t do any actual FHE computation, and instead produces a pointer to the result which is then computed by an offchain server that monitors the L1. This is akin to how lazy evaluation works in programming languages, and allows deferring computation to a later point (in this case to when the block is finalized).
This has many advantages:
Since all ciphertexts on the L1 are simply pointers (the actual data is stored in a DA), FHE operations can be chained just like regular operations, without needing to wait for the previous ones to complete. The only time we need to wait for a ciphertext to be computed is when it has to be decrypted.
From a security perspective, everything the coprocessor does is publicly verifiable, and anyone can just recompute the ciphertexts to verify the result. Initially, Zama will be running the coprocessors, but longer term the goal is to enable anyone to compete to execute FHE operations, leveraging ZK-FHE to prove the correctness.
To maintain composability onchain, all ciphertexts need to be encrypted under the same public key. This means the private decryption key has to be secured in a way that prevents illegitimate decryption of ciphertexts. The fhEVM solves this by splitting the private key amongst multiple parties, using a dedicated threshold MPC protocol called a KMS (for Key Management Service).
In order for a user or contract to decrypt a value, they need to first have been explicitly allowed to do so by the contract that produced it on the L1. To request a decryption from the KMS, they then need to provide a Merkle proof that they are allowed to do so on the L1.
Behind the scenes, Zama’s KMS is actually a blockchain L1, with a convenient web API on top. Whenever an application requests a decryption through Zama’s APIs, a transaction is made to Zama’s KMS chain, which verifies the proofs and runs the threshold decryption protocol. We will share more about it soon.
Getting to this point was hard. The fhEVM is likely the most advanced, complex cryptographic protocol to ever be pushed into production (and we haven’t even talked about the details of the KMS yet!). But this is what it takes to bring privacy and confidentiality to everyone onchain, without compromising on security and user experience.
When it comes to user experience, anyone who has tried to build confidential dapps will know how terrible the experience is: you need to learn a new language, think about “circuits”, then do heavy computation on slow laptops, and so on. With the fhEVM, none of this is necessary. All you need to know is Solidity, and with that you can get started immediately. As an example, consider an ERC20 token with encrypted balances:
This involves only 3 steps:
That’s it. It really is that simple. You can check out the documentation for more examples.
The ability to build confidentiality in blockchain applications is not just a matter of personal privacy. It’s a matter of enabling a whole suite of use cases that were previously impossible. Here are some examples:
But what if we went beyond that? What if FHE was the key to running everything onchain? From money, finance, and identity to companies, elections, and games, from AI, social media, and cloud services, all the way to entire states and their governments. – all of this could run on a public blockchain while being encrypted end-to-end. We call this vision HTTPZ: just like HTTPS brought privacy online, HTTPZ will bring privacy onchain.
The infrastructure for HTTPZ is here. What we now need are applications, so if you are a builder and want to make this future happen, if you want to be an FHE pioneer, get in touch!
News, research and product releases