Is there some lower level code that Plutus code compiles to (akin to Solidity => EVM bytecode, or BSV sCrypt => OP_codes)?

Related (but distinct) how the state changes: https://cardano.stackexchange.com/a/7253/4968

1 Answer 1


Yes, there is a lower level code that is used onchain, it is called Untyped Plutus Core (UPLC)! When validators are written in template haskell, they get compiled via

1) GHC: Haskell -> GHC Core
2) Plutus Tx compiler: GHC Core -> Plutus IR
3) Plutus IR compiler: Plutus IR -> Typed Plutus Core
4) Type eraser: Typed Plutus Core -> Untyped Plutus Core

To learn more about UPLC have a look at this great blog.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.