Plutus vs Pluto vs Plutarch vs Plutus Light

Can someone explain to a beginner (who has previously attempted the Plutus Pioneers program but dropped out halfway through) what the differences are between all these different ways of programming Plutus core; and which one(s) should I learn?

Plutus: https://github.com/input-output-hk/plutus
Plutarch: https://github.com/Plutonomicon/plutarch-plutus
Pluto: https://github.com/Plutonomicon/pluto
Plutus Light: https://github.com/openengineer/Plutus-Light

1 Like

Use/learn plutus.

At quick glance, the other 2.5 tools you list (plutarch-plutus and plutus-light) are nascent projects aimed at creating domain specific languages that compile to plutus core.

Plutus is IOG’s Haskell framework for writing validator scripts. It uses Haskell’s metaprogramming features to compile your on-chain logic, written in Haskell, into Plutus core. This approach allows both on- and off-chain code to reside in the same source.

Pluto is a low-level language that compiles to plutus-core. It can only be used for on-chain logic. The reference compiler of Pluto is written in Haskell. I think Pluto is intended as an intermediate representation for high-level languages.

Plutarch is an alternative to IOG’s Plutus, and is essentially a Haskell library, so you can still use Plutus where necessary. Plutarch allows compiling your programs into more compact plutus-core scripts (resulting in lower fees).

Plutus-Light, recently renamed to Helios, is a C-like high-level language that compiles to plutus-core. Like Pluto it can only be used for the on-chain logic. The reference compiler is a single JavaScript file with no dependencies.

For serious work I recommend learning Plutus (and optionally using Plutarch when script sizes become an issue). Pluto is too low level to be practical. We (I am the creator) are still in the process of testing Helios so I don’t yet recommend you use that (unless you want to help us debug the compiler :stuck_out_tongue: )

4 Likes

A little update concerning Helios (formerly Plutus-Light).

The library now includes a tx-builder, so it can be used for the off-chain code as well. It made sense to implement this because there is a lot of common code between the tx-builder and the compiler.

Over the past 2 months we managed to fix a lot of bugs, and I am now personally confident enough to use Helios for Cardano DApp development (given sufficient testing).

Here are two demos (Chrome/Eternl/Preview-testnet only): PicoSwap, atomic swaps and minimal NFT marketplace, and Cardano Subscription Manager

2 Likes