# zkEVM and privacy
## Current state of privacy supporting projects
The following projects set to remove a major barriers that a lot of users face when using blockchains: lack of privacy. Each of these projects is in a different phase of development and offers a different range of services.
### Private transactions
Tornado Cash, Polygon Nightfall, Aztecs and Railgun offer private transfer of assets but no smart contract interactions
| | Tornado Cash | Polygon Nightfall| Aztecs | Railgun |
| -------- | -------- | ------- | ------- | ------- |
| Types of assets | ETH, some ERC20|ETH, ERC20,ERC721| ETH, some ERC20| ETH, some ERC20 |
| Execution time| not fixed, but user should wait for higher anonymity|x| | |
|Additional utility|None | None| Interaction with chosen L1 Defi protocols| Built-in orderbook|
|Development stage|Mainnet|Mainnet in Q4 2022|Mainnet|Mainnet|
### Private smart contract interactions
The following projects
| | Polygon ZK | ZkSync| Scroll|
| -------- | -------- | ------- | ------- |
|Development stage|testnet planned for Q3 2022, but still not available. Currently only satisfies 72% of the official EVM testcases| zkSyncv2 testnet|Prealpha testnet|
|Technology|STARK for state transition, SNARK for validity of STARK proof|EVM compatibility only on the language level, not bytecode level. Certain opcodes are still not supported|ZK-Snark circuit for each EVM opcode|
||Starkware| Aleo|
| --------- | --------- | -------- |
|Development state |ZK-rollup for scaling, but not privacy | testnet with privacy|
|Language|Cairo|Leo (compiled to AVM)|
|Technology|First to utilize STARK, proof generator is still private| Snark|
## Why is zkEVM difficult
- There are certain opcodes that are difficult to write zk-circuits for, namely smart contracts related ones (CALL, DELEGATECALL) or error handling (REVERT, INVALID).
- The stack-based architect structure of EVM makes the construction of zk-circuit even more complex.
- zkEVM circuits not only proof the correctness of the computation of each EVM opcode but also the validity of the state transition. The data structure Merkle Patricia Tree for EVM's storage creates a high overhead for the proof generation. There are 3 such trees in EVM: state tree, storage tree, transactions tree, receipts tree.
## Sources
https://blog.polygon.technology/the-future-is-now-for-ethereum-scaling-introducing-polygon-zkevm/
https://polygon.technology/solutions/polygon-zkevm/
https://blog.matter-labs.io/zksync-2-0-hello-ethereum-ca48588de179
https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k
https://mirror.xyz/msfew.eth/Yl64OK3lLG48eJpVB3GxqFEhmWOm6yMlAo9sc1VrQP4