84 lines
2.0 KiB
Plaintext
84 lines
2.0 KiB
Plaintext
use aiken/collection/list
|
|
use cardano/credential.{Script, VerificationKey}
|
|
use cardano/governance.{
|
|
Abstain, ConstitutionalCommitteeMember, DelegateRepresentative,
|
|
GovernanceActionId, No, StakePool, Yes,
|
|
}
|
|
use cardano/transaction.{ScriptContext}
|
|
|
|
type Foo {
|
|
Foo(Int)
|
|
}
|
|
|
|
const only0s = #"00000000000000000000000000000000000000000000000000000000"
|
|
|
|
const only7s =
|
|
#"7777777777777777777777777777777777777777777777777777777777777777"
|
|
|
|
const only8s =
|
|
#"8888888888888888888888888888888888888888888888888888888888888888"
|
|
|
|
const only9s =
|
|
#"9999999999999999999999999999999999999999999999999999999999999999"
|
|
|
|
validator {
|
|
fn script(_tmp0: Void, ctx: ScriptContext) {
|
|
assert_redeemer(ctx.redeemer)
|
|
|
|
let votes = ctx.transaction.votes
|
|
|
|
expect Some(
|
|
Pair(ConstitutionalCommitteeMember(Script(..)),
|
|
[Pair(GovernanceActionId { transaction, proposal_procedure: 1 }, Yes)]),
|
|
) = list.at(votes, 0)
|
|
expect transaction == only9s
|
|
|
|
expect
|
|
Some(
|
|
Pair(ConstitutionalCommitteeMember(VerificationKey(only0s)),
|
|
[
|
|
Pair(GovernanceActionId {
|
|
transaction: only9s,
|
|
proposal_procedure: 152,
|
|
},
|
|
No),
|
|
]),
|
|
) == list.at(votes, 1)
|
|
|
|
expect Some(Pair(DelegateRepresentative(Script(..)), [_, ..])) =
|
|
list.at(votes, 2)
|
|
|
|
expect
|
|
Some(
|
|
Pair(DelegateRepresentative(VerificationKey(only0s)),
|
|
[
|
|
Pair(GovernanceActionId { transaction: only7s, proposal_procedure: 2 },
|
|
Abstain),
|
|
Pair(GovernanceActionId { transaction: only8s, proposal_procedure: 1 },
|
|
Abstain),
|
|
Pair(GovernanceActionId { transaction: only9s, proposal_procedure: 0 },
|
|
Abstain),
|
|
]),
|
|
) == list.at(votes, 3)
|
|
|
|
expect Some(Pair(StakePool(pool_id), [_, ..])) = list.at(votes, 4)
|
|
expect pool_id == only0s
|
|
|
|
True
|
|
}
|
|
}
|
|
|
|
fn assert_redeemer(data: Data) {
|
|
let is_valid =
|
|
if data is Foo(42): Foo {
|
|
True
|
|
} else if data is Void {
|
|
True
|
|
} else {
|
|
False
|
|
}
|
|
|
|
expect is_valid
|
|
Void
|
|
}
|