> For the complete documentation index, see [llms.txt](https://docs.nebra.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nebra.one/integrating-with-zkvms.md).

# 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.&#x20;

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.
