Smart Contracts
Working with Plutus scripts in Evolution SDK
Smart Contracts
Evolution SDK provides full support for Cardano smart contracts — Plutus V1, V2, and V3. Lock funds to script addresses with datums, spend from scripts with redeemers, mint tokens with minting policies, and reference on-chain scripts to reduce transaction size.
The transaction builder handles script evaluation, redeemer indexing, and collateral selection automatically. You focus on your contract logic.
Smart Contract Flow
How It Works
Smart contract interaction in Cardano involves three concepts:
| Concept | Purpose | When Used |
|---|---|---|
| Datum | Data attached to a UTxO at a script address | When locking funds to a script |
| Redeemer | Data provided to unlock a script UTxO | When spending from a script |
| Script | The validator logic (Plutus or Native) | Attached to transactions or referenced on-chain |
Typical Workflow
Locking (sending funds to a script):
import { , , , , , } from "@evolution-sdk/evolution"
const = .()
.({
: "https://cardano-preprod.blockfrost.io/api/v0",
: ..!
})
.({ : ..!, : 0 })
// Lock 10 ADA to a script address with an inline datum
const = await
.()
.({
: .("addr_test1wrm9x2dgvdau8vckj4duc89m638t8djmluqw5pdrFollw8qnmqsyu"),
: .(10_000_000n),
: new .({ : .(0n, []) })
})
.()
const = await .()
const = await .()Spending (unlocking funds from a script):
import {
,
,
,
,
type ,
,
} from "@evolution-sdk/evolution"
const = .()
.({
: "https://cardano-preprod.blockfrost.io/api/v0",
: ..!
})
.({ : ..!, : 0 })
declare const : .[] // from client.getUtxos(scriptAddress)
declare const : any // compiled Plutus script (from Aiken build or Blueprint codegen)
// Spend from script with a redeemer
const = await
.()
.({
: ,
: .(0n, []) // "Claim" action
})
.({ : })
.()
const = await .()
const = await .()Supported Script Types
| Type | Description | Use Case |
|---|---|---|
| PlutusV1 | First-generation Plutus scripts | Legacy contracts |
| PlutusV2 | Reference scripts, inline datums | Most current contracts |
| PlutusV3 | Conway-era features, governance | Latest contracts |
| NativeScript | Time-locks, multi-sig | Simple policies without Plutus |
What the Builder Handles
You focus on your contract logic — the builder handles the rest. When you build a transaction with scripts, Evolution SDK automatically evaluates scripts (computes execution units), indexes redeemers (after coin selection reorders inputs), selects collateral, calculates fees (including script execution costs), and attaches cost models.
Next Steps
Datums
Attach data to script outputs
Locking to Script
Send funds to a script address
Spending from Script
Unlock funds with redeemers
Minting Tokens
Mint and burn native tokens with minting policies
Native Scripts
Time-locks, multi-sig, and simple minting without Plutus
Redeemers
Static, self, and batch redeemer modes
Reference Scripts
Reduce transaction size with on-chain scripts
Parameterized Scripts
Apply parameters to reusable validators
Blueprint Codegen
Generate type-safe schemas from CIP-57 blueprints
Tutorial: Token Vesting
End-to-end tutorial — lock, wait, claim
Tutorial: Mint an NFT
Mint with CIP-25 metadata — name, image, description
Tutorial: Multi-Sig Treasury
2-of-3 shared funds — no single person controls spending