# Integrating with zkVMs

zkVMs produce ZKPs of the validity of arbitrary computations. Very often, these proofs are STARK proofs, which are expensive to verify in Ethereum smart contracts.

Consequently, these STARK proofs can be recursively wrapped to generate a Groth16 or PLONK proof which can be efficiently verified on-chain (in the EVM or similar execution environment). In this section, we describe how to take such Groth16 proofs and aggregate them via UPA.

Last updated