aiken/examples/acceptance_tests/036/validators/spend.ak

38 lines
810 B
Plaintext

use aiken/dict
use aiken/list
use aiken/transaction.{Output, OutputReference, ScriptContext}
use aiken/transaction/value.{PolicyId}
const my_policy_id: PolicyId =
#"0000000000"
pub fn has_policy_id(self: Output, policy_id: PolicyId) -> Bool {
self.value
|> value.tokens(policy_id)
|> dict.is_empty
|> not
}
validator spend {
fn(_datum: Data, _redeemer: Data, ctx: ScriptContext) -> Bool {
ctx.transaction.outputs
|> list.any(has_policy_id(_, my_policy_id))
}
}
validator mint(output_reference: OutputReference) {
fn(_redeemer: Void, ctx: ScriptContext) -> Bool {
when
list.find(
ctx.transaction.inputs,
fn(input) { input.output_reference == output_reference },
)
is {
Some(_) ->
True
None ->
False
}
}
}