aiken/examples/acceptance_tests/089/validators/test2.ak

70 lines
1.7 KiB
Plaintext

use aiken/collection/list
use cardano/assets
use cardano/credential.{Address, VerificationKey}
use cardano/transaction.{Input, NoDatum, Output, OutputReference, Transaction}
pub const own_hash = #"01020304050607080910111213140102030405060708091011121314"
pub const other_hash =
#"02030405060708091011121314150203040506070809101112131415"
pub const beneficiary_keyhash =
#"03040506070809101112131415160304050607080910111213141516"
pub fn beneficiary_address() {
keyhash_address(beneficiary_keyhash)
}
pub fn keyhash_address(keyhash: ByteArray) {
Address {
payment_credential: VerificationKey(keyhash),
stake_credential: None,
}
}
validator simple_oneshot(utxo_ref: OutputReference) {
mint(_r: Void, _policy_id: ByteArray, self: Transaction) {
let Transaction { inputs, .. } = self
expect Some(_input) =
list.find(inputs, fn(input) { input.output_reference == utxo_ref })
let input =
list.find(inputs, fn(input) { input.output_reference == utxo_ref })
when input is {
Some(_) -> True
None -> False
}
}
else(_) {
fail
}
}
test test_simple_oneshot() {
let output =
Output {
address: beneficiary_address(),
value: assets.zero(),
datum: NoDatum,
reference_script: None,
}
let mint =
assets.from_asset(policy_id: own_hash, asset_name: "testtoken", quantity: 1)
let utxo = OutputReference { transaction_id: "", output_index: 0 }
let input = Input { output_reference: utxo, output }
let tx =
Transaction {
..transaction.placeholder(),
mint: mint,
extra_signatories: [other_hash],
inputs: [input],
}
simple_oneshot.mint(utxo, Void, own_hash, tx) == True
}