<p>My answer as shared under your twitter comment <a href="https://twitter.com/thepizzaknight_/status/1550332974524145665?s=20&amp;t=wqYk7V1LmFi5f5VVv-Jzkg" rel="nofollow noreferrer">here</a></p>
<p>It's not necessary, Plutus is a subset of Haskell which has a mature library i.e. GHC (runtime env, toolchains, etc) and is able compile instructions directly to machine code.</p>
<p>It can still utilise one like WASM/LLVM for various needs.</p>
<p>TL;DR: The Cardano Node is the machine.</p>

CC BY-SA 4.0
2023-05-24T03:33:28.877Z
Plutus is not compiled directly to machine code, but to a defined language called Plutus Core. Plutus Core is an eagerly-evaluated version of the untyped lambda calculus extended with some “built-in” types and functions; it is intended for the implementation of validation scripts on the Cardano blockchain (from the plutus-core-specification document)
Bharat Mallapur
CC BY-SA 4.0
2022-07-22T04:22:08.840Z
2022-07-22T04:22:08.840Z
Pizza Knight
<p>Ethereum, Solana, and other blockchains that use an accounts-based ledger model can each be thought of as one big box of logical interdependencies, whose <em>state</em> is constantly changing, all replicated, maintained, and updated by many nodes. Keeping track of and executing all these interdependencies requires a &quot;VM&quot; - a sort of universe in which all these logical structures can live in context with one another. This allows for a high degree of flexibility and customizability, but also makes it difficult to model and prevent chaotic side effects.</p>
<p>Bitcoin, Cardano, and other blockchains that use a UTXO-based ledger model are different. Instead of thinking of the blockchain as one big box (as in the previous case), it is better to think of it as a collection, or a <em>set</em>, of many little boxes (a.k.a UTXOs). The whole UTXO set is replicated and constantly changing like any other blockchain, but <strong>there are no interdependencies between the UTXOs themselves.</strong> Instead, each UTXO contains just enough information it needs to only ever be spent <em>exactly</em> how the creator of the UTXO intended it. There is no notion of a shared &quot;global state&quot;, and hence no need for a VM.</p>

CC BY-SA 4.0
2022-07-22T04:19:52.577Z
The "VM" aspect is not dependent on how state is managed or what transaction record models are implemented in a given blockchain stack (that's a bonus), but rather the approaches by which execution code is equipped to interface with hardware platforms. Case in point: Fuel uses the Fuel VM with a UTXO transaction recording model.

Languages like C and Haskell are able to interface well with native machines due to maturity in builds/compilers/libraries whereas Java for example requires the JRE (JVM + other components) as helpers to function, or in this case Solidity with the EVM.
Pizza Knight
CC BY-SA 4.0
2022-07-21T20:37:01.323Z
2022-07-21T20:37:01.323Z
zhekson
<p>Does Cardano have a virtual machine? Throughout crypto we hear a lot about EVM but have never heard any reference to a Cardano VM? Is there a need for a VM for Cardano or has the system been architected in away that eliminates the need?</p>

<cardano-node>
Is there a Cardano VM?
# Is there a Cardano VM?

(Asked by: username_0 on 2022-07-21)

Does Cardano have a virtual machine? Throughout crypto we hear a lot about EVM but have never heard any reference to a Cardano VM? Is there a need for a VM for Cardano or has the system been architected in away that eliminates the need?

**Tags:** cardano-node

---

## 2 answers

### Answer by username_3 on 2022-07-21. Score: 3

Ethereum, Solana, and other blockchains that use an accounts-based ledger model can each be thought of as one big box of logical interdependencies, whose *state* is constantly changing, all replicated, maintained, and updated by many nodes. Keeping track of and executing all these interdependencies requires a "VM" - a sort of universe in which all these logical structures can live in context with one another. This allows for a high degree of flexibility and customizability, but also makes it difficult to model and prevent chaotic side effects.

Bitcoin, Cardano, and other blockchains that use a UTXO-based ledger model are different. Instead of thinking of the blockchain as one big box (as in the previous case), it is better to think of it as a collection, or a *set*, of many little boxes (a.k.a UTXOs). The whole UTXO set is replicated and constantly changing like any other blockchain, but **there are no interdependencies between the UTXOs themselves.** Instead, each UTXO contains just enough information it needs to only ever be spent *exactly* how the creator of the UTXO intended it. There is no notion of a shared "global state", and hence no need for a VM.

> **Comments:**
> **username_1**: The "VM" aspect is not dependent on how state is managed or what transaction record models are implemented in a given blockchain stack (that's a bonus), but rather the approaches by which execution code is equipped to interface with hardware platforms. Case in point: Fuel uses the Fuel VM with a UTXO transaction recording model.  Languages like C and Haskell are able to interface well with native machines due to maturity in builds/compilers/libraries whereas Java for example requires the JRE (JVM + other components) as helpers to function, or in this case Solidity with the EVM.  

---

### Answer by username_1 on 2022-07-22. Score: 0

My answer as shared under your twitter comment [here](https://twitter.com/thepizzaknight_/status/1550332974524145665?s=20&t=wqYk7V1LmFi5f5VVv-Jzkg)

It's not necessary, Plutus is a subset of Haskell which has a mature library i.e. GHC (runtime env, toolchains, etc) and is able compile instructions directly to machine code.

It can still utilise one like WASM/LLVM for various needs.

TL;DR: The Cardano Node is the machine.

> **Comments:**
> **username_2**: Plutus is not compiled directly to machine code, but to a defined language called Plutus Core. Plutus Core is an eagerly-evaluated version of the untyped lambda calculus extended with some “built-in” types and functions; it is intended for the implementation of validation scripts on the Cardano blockchain (from the plutus-core-specification document)  

---

