Cardano Smart Contract Development
Write type-safe smart contracts for Cardano using Scala. Debug validators with breakpoints in your IDE, test with ScalaCheck, and compile to Plutus Core.
@Compile
object MyValidator extends Validator:
inline override def spend(
datum: Option[Data],
redeemer: Data,
tx: TxInfo,
outRef: TxOutRef
): Unit =
val owner = datum.getOrFail("No datum").to[PubKeyHash]
require(tx.signatories.contains(owner), "Not signed by owner")Tutorials
- Build Your First Validator — Create a spending validator, write tests, and debug step-by-step
- HTLC Tutorial — Complete Hash Time-Locked Contract with tests and transactions
- Compiling to Plutus — Generate scripts, blueprints, and parameterized validators
Validators
- Validator Types — Spending, minting, rewarding, and certifying validators
- Parameterized Validators — Reusable validators with compile-time configuration
- Plutus Data — Type-safe conversion between Scala and Plutus Data
Testing & Debugging
- Unit Testing — ScalusTest trait and property-based testing with ScalaCheck
- Debugging — Breakpoints, logging, and IDE debugger integration
Production
- Security — Common vulnerabilities and how to avoid them
- Optimizations — Reduce script size and execution costs
- Design Patterns — Patterns for multi-input validators
Related
- Building Transactions — Use validators in transactions
- DApp Development — Full application development
Last updated on