# Execution Environment

The Citrea VM is an EVM-equivalent virtual machine running on Bitcoin and using **$cBTC** as its native token. EVM, as a concept, is arguably the most battle-tested and mature VM in the cryptocurrency ecosystem. It is a deterministic, stack-based virtual machine, renowned for its ability to efficiently execute smart contracts in a secure and isolated environment.

Citrea implements its own EVM, referred to as a "**zkEVM**". A zkEVM is a special EVM implementation that makes the full VM implementation provable. Citrea zkEVM is classified as **Type 2**, which means full equivalency and a scalable and trustless proof system as it is based on zk-STARKs. Citrea zkEVM is built using RISCZero.

#### Different characteristics of Citrea

Being a Type 2 zkEVM, Citrea has some different characteristics compared to Ethereum and other EVM blockchains:

* **Native currency is Bitcoin**: Citrea uses $cBTC for gas fees and transfers in the network, which is the trust-minimized 1:1-backed Bitcoin asset. It is **not** an ERC-20 - it is the native asset with 18 decimals (not 8!).
* **Block time & gas limit**: Citrea has a block time of **2 seconds** with a block gas limit of **10 million**.
* **L1 Fee**: As Citrea posts state diffs to Bitcoin, there is a fundamental DA cost - this is reflected as **L1 Fee** to the users. L1 Fee is deducted from the address's balance at the end of a transaction, and it is calculated with the formula of `l1FeeRate * diffSize`. If there is not enough balance to pay the L1 Fee, the transaction will fail. See the [Fee Model](https://docs.citrea.xyz/advanced/fee-model) for detailed calculations and typical costs.
  * **L1 Fee Rate**: Wei per Byte cost of the state diff, derived from Bitcoin's current fee market.
  * **Diff Size**: The size of the compressed state diff in bytes.
* **EVM Version & Tweaks**: Citrea supports **Pectra** version of EVM with some tweaks:
  * **EIP-4844**: EIP-4844 is not supported on Citrea, along with KZG precompile. If the address `0x0A` is called, it will behave like an EOA.
  * **EIP-2935**: EIP-2935 is not supported on Citrea.
* **Additional Precompiles**: Compared to Pectra version, Citrea offers two additional precompiles: **secp256r1** and **Schnorr**. You can read more about them [here](https://docs.citrea.xyz/developer-documentation/schnorr-secp256r1).
* **Merkle Tree**: Citrea uses Jellyfish Merkle Tree for its state instead of Patricia Merkle Tree.
* **System Smart Contracts**: There are special system smart contracts of Citrea that are optimized for system level operations: `BitcoinLightClient`, `Bridge`, and `FeeVault`. You can read more about them [here](https://docs.citrea.xyz/developer-documentation/system-contracts).
