91 lines
1.9 KiB
Plaintext
91 lines
1.9 KiB
Plaintext
use sample
|
|
use sample/mint
|
|
use sample/spend
|
|
use aiken/builtin
|
|
|
|
const something = 5
|
|
|
|
pub type Redeemer {
|
|
signer: ByteArray,
|
|
amount: Int,
|
|
other_thing: Redeemer,
|
|
}
|
|
|
|
pub type Reen {
|
|
Buy1 { signer: ByteArray, amount: Int }
|
|
Sell1
|
|
}
|
|
|
|
pub fn twice(f: fn(Int) -> Int, initial: Int) -> Int {
|
|
f(f(initial))
|
|
}
|
|
|
|
pub fn add_one(value: Int) -> Int {
|
|
value + 1
|
|
}
|
|
|
|
pub fn add_two(x: Int) -> Int {
|
|
twice(add_one, x)
|
|
}
|
|
|
|
pub fn final_check(z: Int) {
|
|
z < 4
|
|
}
|
|
|
|
pub fn incrementor(counter: Int, target: Int) -> Int {
|
|
if counter == target {
|
|
counter
|
|
} else if counter > target {
|
|
counter - target
|
|
} else {
|
|
incrementor(counter + 1, target)
|
|
}
|
|
}
|
|
|
|
pub type Datum {
|
|
Offer { prices: List(Int), asset_class: ByteArray, other_thing: Datum }
|
|
Sell
|
|
Hold(Int)
|
|
}
|
|
|
|
pub fn spend(datum: Datum, _rdmr: Nil, _ctx: Nil) -> Bool {
|
|
// when datum is {
|
|
// Sell -> sample.eqIntPlusOne(sample.incrementor(0, 8), 9)
|
|
// Offer {
|
|
// prices: p,
|
|
// asset_class: ac,
|
|
// other_thing: Offer {
|
|
// other_thing: Offer { asset_class: nested_signer, prices: amounts, .. },
|
|
// ..
|
|
// },
|
|
// } -> 1 == 1
|
|
// Offer { prices, other_thing: thing, .. } ->
|
|
// when prices is {
|
|
// [] -> True
|
|
// [a] -> True
|
|
// [a, b, c] -> True
|
|
// [a, b, c, d, ..e] -> sample.big_a == a
|
|
// }
|
|
// _ -> False
|
|
// }
|
|
let x = Buy1{signer: #[4, 4, 255], amount: 1000}
|
|
when x is {
|
|
Buy1{signer, ..} -> signer == #[3,3,255]
|
|
_ -> False
|
|
}
|
|
}
|
|
// let Redeemer{ signer, amount: amount2, other_thing: Redeemer{ signer: nested_signer, ..}} = datum
|
|
// True
|
|
// when datum is {
|
|
// Offer{ price: p, asset_class: ac, thing: thing, other_thing: Redeemer{ other_thing: Redeemer{ signer: nested_signer, amount: amount, ..}, .. } } -> True
|
|
// _ -> False
|
|
// }
|
|
// Offer{ prices, other_thing: thing, .. } -> {
|
|
// when prices is {
|
|
// [] -> True
|
|
// [1] -> False
|
|
// [a, b] -> True
|
|
// [a, b, ..[a]] -> False
|
|
// }
|
|
// }
|