# 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](/advanced/fee-model.md) 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).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.citrea.xyz/essentials/execution-environment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
