stdlib
stdlib copied to clipboard
The Aiken Standard Library
Compatibility
aiken's version | stdlib's version(s) |
---|---|
v1.0.29-alpha |
>= 1.9.0 |
v1.0.28-alpha |
>= 1.9.0 |
v1.0.26-alpha |
<= 1.8.0 |
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/hash.{Blake2b_224, Hash}
use aiken/list
use aiken/transaction.{ScriptContext}
use aiken/transaction/credential.{VerificationKey}
pub type Datum {
owner: Hash<Blake2b_224, VerificationKey>,
}
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 {
fn spend(datum: Datum, redeemer: Redeemer, context: ScriptContext) -> Bool {
let must_say_hello =
redeemer.msg == "Hello, World!"
let must_be_signed =
context.transaction.extra_signatories
|> list.any(fn(vkh: ByteArray) { vkh == datum.owner })
must_say_hello && must_be_signed
}
}