Skip to content

aiken-lang/stdlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

488 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Aiken Aiken Standard Library

Licence Continuous Integration


Getting started

aiken add aiken-lang/stdlib --version v3

Compatibility

stdlib's version(s) aiken's version Plutus version
>= 3.0.0 >= v1.1.17 V3
>= 2.1.0 && < 3.0.0 >= v1.1.3 V3
>= 2.0.0 && < 2.1.0 v1.1.1, v1.1.2 V3
>= 1.9.0 && < 2.0.0 v1.0.28-alpha, v1.0.29-alpha V2

Overview

The official standard library for the Aiken Cardano smart-contract language.

It extends the language builtins with useful data-types, functions, constants and aliases that make using Aiken a bliss.

use aiken/collection/list
use aiken/crypto.{VerificationKeyHash}
use cardano/transaction.{OutputReference, Transaction}

pub type Datum {
  owner: VerificationKeyHash,
}

pub type Redeemer {
  msg: ByteArray,
}

/// A simple validator which replicates a basic public/private signature lock.
///
/// - The key (hash) is set as datum when the funds are sent to the script address.
/// - The spender is expected to provide a signature, and the string 'Hello, World!' as message
/// - The signature is implicitly verified by the ledger, and included as 'extra_signatories'
///
validator hello_world {
  spend(datum: Option<Datum>, redeemer: Redeemer, _, self: Transaction) {
    expect Some(Datum { owner }) = datum

    let must_say_hello = redeemer.msg == "Hello, World!"

    let must_be_signed = list.has(self.extra_signatories, owner)

    and {
      must_say_hello,
      must_be_signed,
    }
  }
}