Plutus Core and Plutus Tx User Guide
Explore Plutus
Explanations
What is the Plutus Platform?
Applications
The Plutus Platform
Further reading
What is a ledger?
Account-based and UTXO-based ledgers
Scripts and the Extended UTXO Model
Different kinds of scripts
Further reading
What is Plutus Foundation?
Plutus Core
Plutus Tx
Further reading
What are Plutus language versions?
Simple example
Plutus script for an auction smart contract
Overview
The EUTXO model, datum, redeemer and script context
Auction properties
Plutus Tx code
Data types
Main validator function
Life cycle of the auction smart contract
Initial UTXO
The first bid
The second bid
Closing the auction
Libraries for writing Plutus Tx scripts
Alternatives to Plutus Tx
Off-chain code
Further reading
The EUTXO model
Quick Start
Writing the On-Chain Validator
Prerequisites
Create a New Cabal Package
Declare Plutus Tx Dependencies
Write the Validator
Creating and Submitting Transactions using an Off-Chain Framework
Interfacing between Plutus Tx and Off-Chain Frameworks
GHC Extensions, Flags and Pragmas
Extensions
Flags
Pragmas
Tutorials
Using Plutus Tx
Template Haskell preliminaries
Writing basic Plutus Tx programs
Functions and datatypes
Typeclasses
The Plutus Tx Prelude
Lifting values
Plutus Tx Compiler Options
Writing basic validator scripts
Validator arguments
The
Data
type
Signaling failure
Validator functions
Plutus script context versions
Writing basic minting policies
Minting policy arguments
Plutus script context versions
Writing minting policies
Other policy examples
How-to guides
How to export scripts, datums and redeemers
How to profile the budget usage of Plutus scripts
Compiling a script for profiling
Acquiring an executable script
Running the script
Analysing the results
Troubleshooting
Plugin errors
Haddock
Non-
INLINABLE
functions
Haskell Language Server issues
Wrong version
Error codes
Architectural decision records
Architectural decision records
ADR 1: Record architectural decisions
Authors
Status
Context
Decision
Implications
ADR template
ADR 2: Steppable CEK machine
Authors
Status
Context
Decision
Abstracting out the computation to “steps”
Coroutines in Haskell
Argument: coroutine system
Implications
ADR 3: Sharing code between the production and debugging CEK machine
Authors
Status
Context
Decision: Polymorphic compute/return steps
Detailed description with code snippets
Implications
ADR 4: Deferred unlifting in Plutus Core
Authors
Status
Context
Decision
Argument
Alternatives
1. Status quo
2. Support both versions forever
Implications
Notes
Reference
Reference
Writing scripts
Plutus Tx Compiler Options
Optimization techniques for Plutus scripts
Identifying problem areas
Using strict let-bindings to avoid recomputation
Specializing higher-order functions
Common sub-expression elimination
Using
error
for faster failure
Examples
Common weaknesses
Double satisfaction
Hard limits
Plutus on Cardano
Plutus language changes
Language versions
Examples
Built-in functions and types
Upgrading to Vasil and Plutus script addresses
A Plutus V2 script will not have the same hash value as a Plutus V1 script
A Plutus V1 script will not necessarily have the same hash value when recompiled with a later version of the Plutus Compiler
When to export and save the output of a compiled script
Cost model parameters
Glossary
Bibliography
Plutus Core and Plutus Tx User Guide
»
Reference
Edit on GitHub
Reference
Writing scripts
Plutus Tx Compiler Options
Optimization techniques for Plutus scripts
Examples
Common weaknesses
Double satisfaction
Hard limits
Plutus on Cardano
Plutus language changes
Upgrading to Vasil and Plutus script addresses
Cost model parameters
Glossary
Bibliography
Read the Docs
v: latest
Versions
latest
stable
Downloads
On Read the Docs
Project Home
Builds