<p>There is no Cardano equivalent to the EVM because <strong>code execution on Cardano is mostly an off-chain process.</strong></p>
<p>In short, &quot;smart contracts&quot; is a bit of a misnomer because of how very different <em>programmability</em> is achieved in UTXO vs Accounts based distributed systems. In short:</p>
<ul>
<li><p>In accounts, smart contracts are programs that are authorized to autonomously initiate state changes when specific conditions (on-chain) are met. In a way these programs have their own agency, making it easy to create a very precise dependency cascade (if X then Y then Z, then e.t.c.). As such, <strong>Ethereum itself is akin to a shared, single threaded, dynamically modifiable program, whose state is shared among all participating nodes - we call this the EVM.</strong></p>
</li>
<li><p>In eUTXO, smart contracts are simply &quot;address guards&quot; that only allow their UTXOs to be used as inputs if the spending transaction <em>exactly</em> follows the logic set forth by the script's author. In other words, any transaction attempting to spend from an address guarded by a smart contract many only do so by providing a proof that its logic is equivalent to the logic outlined by the guard's author. As such, <strong>Cardano itself is akin to a shared database that can only be updated according to either canonical (pre-smart contract) or custom (post-smart contract) rulesets.</strong> There is no shared &quot;state&quot; (dependencies) of the system, only a shared history of inputs and outputs. Hence, no &quot;Cardano-VM&quot;</p>
</li>
</ul>
<p>This topic has already been addressed from multiple angles, so I will provide links below that go in greater detail. The following Q/A's helped me understand the differences in the structure of UTXO vs Accounts, so they may help you as well:</p>
<ol>
<li><a href="https://cardano.stackexchange.com/questions/7194/referencing-an-external-plutus-script/7197#7197">Referencing an External Plutus Script</a></li>
<li><a href="https://cardano.stackexchange.com/questions/696/eutxo-transaction-model-vs-account-based-transaction-model">eUTXO transaction model Vs Account Based Transaction Model</a></li>
<li><a href="https://cardano.stackexchange.com/questions/6767/can-blockchain-viewers-read-the-source-code-of-a-smart-contract-if-they-know-its">Can blockchain viewers read the source code of a smart contract if they know its address?</a></li>
<li><a href="https://cardano.stackexchange.com/questions/3987/whats-the-difference-between-programmable-validators-and-smart-contracts">What's the difference between programmable validators and smart contracts?</a></li>
</ol>

CC BY-SA 4.0
2022-02-15T21:15:16.390Z
Thank you very much! This has been immensely helpful.
TypicalHog
CC BY-SA 4.0
2022-02-15T21:25:31.340Z
So... it's essentially wrong to compare eUTXO to EVM, cosmWASM or eWASM? (Apples to oranges)
TypicalHog
CC BY-SA 4.0
2022-02-15T21:29:57.897Z
I am not familiar with cosmWASM, but it is apples to oranges in the sense that smart contracts on (e)UTXO vs Accounts models are hardly comparable.
zhekson
CC BY-SA 4.0
2022-02-15T21:34:23.303Z
Great write up ! Very insightful !
Jey
CC BY-SA 4.0
2022-02-19T22:29:53.053Z
Great answer, thanks! I'd be a bit cautious about this statement though: "code execution on cardano is an entirely off-chain process." There is still an on-chain validation part run in Plutus-core as part of transaction validation.
Jerry
CC BY-SA 4.0
2022-02-15T20:56:35.967Z
2022-10-27T20:58:40.063Z
2022-10-27T20:58:40.063Z
zhekson
<p>Cardano has what is called Plutus Core.</p>
<p>The short of it is that it's an Abstract Machine made up of lambdas and techno-sorcery that finds a way to execute directly on the client machine via Cardano node. This gives it some efficiencies over the VM approach.</p>
<p>Therefore Smart contract &quot;engine&quot;:
EVM (Ethereum) =&gt; Plutus Core</p>
<p>N.B. Plutus is usually used in a blanket manner, usually folks mean Plutus-Tx which is a Haskell derivative.</p>

CC BY-SA 4.0
2022-11-03T05:53:40.263Z
2022-11-03T05:53:40.263Z
Pizza Knight
<p>What is Cardano's smart contract engine called?</p>
<pre><code>Smart contract language:
Solidity (Ethereum) =&gt; Plutus (Cardano) Simple enough, I get this.

Smart contract &quot;engine&quot;:
EVM (Ethereum) =&gt; ??? (Cardano) EUTXO? Plutus? PAB?
</code></pre>

<plutus><smart-contract><pab><eutxo><solidity>
What is the Cardano's equivalent to the Ethereum's EVM?
# What is the Cardano's equivalent to the Ethereum's EVM?

(Asked by: username_0 on 2022-02-15)

What is Cardano's smart contract engine called?
Smart contract language:
Solidity (Ethereum) => Plutus (Cardano) Simple enough, I get this.

Smart contract "engine":
EVM (Ethereum) => ??? (Cardano) EUTXO? Plutus? PAB?

**Tags:** plutus, smart-contract, pab, eutxo, solidity

---

## 2 answers

### Answer by username_1 on 2022-02-15. Score: 7 | Accepted answer

There is no Cardano equivalent to the EVM because **code execution on Cardano is mostly an off-chain process.**

In short, "smart contracts" is a bit of a misnomer because of how very different *programmability* is achieved in UTXO vs Accounts based distributed systems. In short:

* In accounts, smart contracts are programs that are authorized to autonomously initiate state changes when specific conditions (on-chain) are met. In a way these programs have their own agency, making it easy to create a very precise dependency cascade (if X then Y then Z, then e.t.c.). As such, **Ethereum itself is akin to a shared, single threaded, dynamically modifiable program, whose state is shared among all participating nodes - we call this the EVM.**
* In eUTXO, smart contracts are simply "address guards" that only allow their UTXOs to be used as inputs if the spending transaction *exactly* follows the logic set forth by the script's author. In other words, any transaction attempting to spend from an address guarded by a smart contract many only do so by providing a proof that its logic is equivalent to the logic outlined by the guard's author. As such, **Cardano itself is akin to a shared database that can only be updated according to either canonical (pre-smart contract) or custom (post-smart contract) rulesets.** There is no shared "state" (dependencies) of the system, only a shared history of inputs and outputs. Hence, no "Cardano-VM"

This topic has already been addressed from multiple angles, so I will provide links below that go in greater detail. The following Q/A's helped me understand the differences in the structure of UTXO vs Accounts, so they may help you as well:

1. [Referencing an External Plutus Script](https://cardano.stackexchange.com/questions/7194/referencing-an-external-plutus-script/7197#7197)
2. [eUTXO transaction model Vs Account Based Transaction Model](https://cardano.stackexchange.com/questions/696/eutxo-transaction-model-vs-account-based-transaction-model)
3. [Can blockchain viewers read the source code of a smart contract if they know its address?](https://cardano.stackexchange.com/questions/6767/can-blockchain-viewers-read-the-source-code-of-a-smart-contract-if-they-know-its)
4. [What's the difference between programmable validators and smart contracts?](https://cardano.stackexchange.com/questions/3987/whats-the-difference-between-programmable-validators-and-smart-contracts)

> **Comments:**
> **username_0**: Thank you very much! This has been immensely helpful.  
> **username_0**: So... it's essentially wrong to compare eUTXO to EVM, cosmWASM or eWASM? (Apples to oranges)  
> **username_1**: I am not familiar with cosmWASM, but it is apples to oranges in the sense that smart contracts on (e)UTXO vs Accounts models are hardly comparable.  
> **username_2**: Great write up ! Very insightful !  
> **username_3**: Great answer, thanks! I'd be a bit cautious about this statement though: "code execution on cardano is an entirely off-chain process." There is still an on-chain validation part run in Plutus-core as part of transaction validation.  

---

### Answer by username_4 on 2022-11-03. Score: 0

Cardano has what is called Plutus Core.

The short of it is that it's an Abstract Machine made up of lambdas and techno-sorcery that finds a way to execute directly on the client machine via Cardano node. This gives it some efficiencies over the VM approach.

Therefore Smart contract "engine":
EVM (Ethereum) => Plutus Core

N.B. Plutus is usually used in a blanket manner, usually folks mean Plutus-Tx which is a Haskell derivative.


---

