Jinse Finance reported that Ethereum developer barryWhiteHat stated that with the commercialization of zero-knowledge proof virtual machines (zkEVM), an interesting opportunity has emerged: providing private smart contract infrastructure while maintaining compatibility with the Ethereum Virtual Machine (EVM). Developers can write Solidity code and compile it using a specific version of the Solidity compiler or some post-processing tools to create private smart contracts. There are some important trade-offs surrounding private global state and privacy, the core reason being: to prove something, you must know what you are proving. Therefore, it is impossible to have a private smart contract with a global public state that you are unaware of. Consequently, it is also impossible to have a private smart contract with a global private state. For example, applications like Uniswap cannot be implemented in a private form because the prover needs to know the balances of both pools to prove that a swap (transaction) has been executed correctly. Therefore, some applications we are familiar with and favor cannot currently be implemented privately unless we have input/output (IO) functionality—which is precisely why IO is so crucial. It allows us to build a fully private Ethereum with trust assumptions identical to native Ethereum. However, this article aims to explore how to achieve a type of private smart contract—one that has private user state but does not possess private global state—by adding the pstore and pload opcodes in reth and compiling them into the zero-knowledge proof virtual machine (zkEVM).