Skip to main content
Status: Research (docs-first candidate) Candidate target id: cardano-plutus-aiken This note records the first ProofForge classification for Cardano smart contracts through the Plutus/eUTXO model, with Aiken as the preferred first source-generation path. It does not add a Lean target profile yet. Primary sources:

Classification

Cardano should be treated as an eUTXO validator source-generation target. It is not EVM, Wasm-host, Move, Solana sBPF, TVM, Algorand AVM, or a generic UTXO script target.
The first spike should use Aiken because it gives ProofForge a reviewable source package and blueprint output before any lower-level UPLC emitter is attempted.

Why This Matters For ProofForge

ProofForge should model Cardano contracts around validation of UTXO spends and policy scripts, not around mutable contract objects or method calls. Target-specific concerns:
  • contract logic validates transactions against datum, redeemer, and script context;
  • persistent state is represented by UTXOs and successor outputs;
  • spending, minting, withdrawal, and publishing validators have different purposes;
  • value can contain ADA and multi-asset native tokens;
  • transaction validity ranges and signatories are part of correctness;
  • execution units and transaction balancing are practical validation concerns;
  • Plutus blueprints describe validator interfaces and should be captured in artifact metadata;
  • off-chain transaction construction is part of the target surface.

Candidate Target Family

Candidate family:
Candidate artifact shape:

Candidate Capabilities

Some existing capabilities have rough Cardano interpretations, but they need review: Candidate capabilities that may need explicit ids later: Do not add these ids to ProofForge.Target.Capability until a target profile and lowering rules are reviewed.

Implementation Road

Road 1: Aiken Sourcegen

This is the most conservative first spike. First spike:
  • choose a Counter-like state machine encoded as a UTXO datum;
  • generate or wrap one Aiken spending validator;
  • compile the package and capture UPLC plus blueprint output;
  • build a two-step transaction scenario: lock initial state, then spend to a successor output with incremented datum;
  • record datum/redeemer schema, validator role, execution units, tool versions, and validation result in artifact metadata.

Road 2: Restricted Plutus/UPLC IR

This road should wait until the source package route clarifies artifact and transaction semantics. First spike:
  • define a restricted eUTXO validator IR;
  • model datum, redeemer, script context, values, and successor-output checks;
  • keep minting policies, staking scripts, reference scripts, and complex multi-validator protocols out of the first direct path.

Non-Goals For The First Pass

  • Do not add cardano-plutus-aiken to the code registry yet.
  • Do not classify Cardano as EVM, Wasm-host, Move, Solana, TVM, AVM, or generic Bitcoin-like UTXO.
  • Do not model UTXO datum as global mutable storage.
  • Do not hide off-chain transaction-building requirements from metadata.
  • Do not claim direct UPLC support before the Aiken sourcegen route is validated.

Research Exit Criteria

Cardano can leave Research only when we have:
  • a reviewed target profile proposal;
  • a decided first spike path, likely Aiken sourcegen;
  • a minimal eUTXO state-machine scenario;
  • a datum/redeemer/script-context schema policy;
  • an execution-unit and transaction-balancing policy;
  • a documented toolchain requirement set;
  • at least one reproducible local validation command;
  • artifact metadata for source, validators, blueprint, transaction scenario, execution units, toolchain versions, and validation result.