![]() The rationale is two folds: 1. It's more consistent with how we already separate the validator name from its module. 2. Because `_` may be present in Aiken's validator's name, it is hard to read and I am afraid it could potentially conflict later on. So it's better to use a separator that cannot appear in validator names. |
||
---|---|---|
.. | ||
ctx | ||
validators | ||
.gitignore | ||
README.md | ||
aiken.lock | ||
aiken.toml | ||
plutus.json | ||
test.sh |
README.md
V3 Script Context Tests
This project contains a few handcrafted Plutus V3 validators and transactions
whose sole purpose is to test the interpretation of the ScriptContext
from
within an Aiken's validators.
So validators are meant to work hand-in-hand with an associated context. Because we can't have fully static context (since they contain the validator and its hash), we define templates.
Everything is a bit clunky, but steps have been captured in a test.sh
script
for convenience. The test still assumes a few things. For any
VALIDATOR_GROUP
:
-
There's a
ctx/{VALIDATOR_GROUP}/tx.template
andctx/{VALIDATOR_GROUP}/resolved_inputs.template
respectively. -
There's a corresponding validator
validators/{VALIDATOR_GROUP}.ak
-
Templates may reference variables using a mustache-template-like syntax
{{ ... }}
. Provided variables are:{VALIDATOR_GROUP}.{VALIDATOR_TITLE}.hash
{VALIDATOR_GROUP}.{VALIDATOR_TITLE}.cbor
Where
VALIDATOR_TITLE
corresponds to the validator Aiken's name.
How to use
./test.sh VALIDATOR_GROUP
![TIP] By default, this recompiles the project in --release mode, which can be long when iterating / testing. You can provide a binary to use as a second argument. For a dev build, just do:
./test.sh VALIDATOR_GROUP "cargo run --"
Test Coverage
-
Purpose
- spend
- mint
- withdraw
- publish
- voting
- proposing
-
Transaction body
- inputs
- reference inputs
- none
- some
- outputs
- none
- some
- fee
- mint
- certificates
- none
- some
- Register credential
- no deposit
- with deposit
- Unregister credential
- no deposit
- with deposit
- Delegate
- Register & delegate credential
- Register drep
- Unregister drep
- Update drep
- Register pool
- Retire pool
- Delegate CC
- Retire CC
- Register credential
- withdrawals
- none
- some
- validity range
- extra signatories
- none
- some
- redeemers
- datums
- votes
- none
- some
- proposal procedures
- none
- some
- current treasury
- with
- without
- treasury donation
- with
- without
-
Address
- type-0 (key | key)
- type-1 (script | key)
- type-2 (key | script)
- type-3 (script | script)
- type-4 (key | ptr)
- type-5 (script | ptr)
- type-6 (key | ø)
- type-7 (key | ø)
-
Value
- only ada
- multi-assets
-
Output datum
- none
- hash
- inline
-
Output script
- none
- inline
-
Governance Action
- parameter change
- with action id
- without action id
- hardfork initiation
- with action id
- without action id
- treasuryWithdrawals
- with constitution
- without constitution
- no confidence
- with action id
- without action id
- update committee
- with action id
- without action id
- new constitution
- with action id
- without action id
- info action
- parameter change
-
Vote
- No
- Yes
- Abstain
-
Voter
- CC
- DRep
- SPO
-
ChangedParameters
- txFeePerByte
- txFeeFixed
- maxBlockBodySize
- maxTxSize
- maxBlockHeaderSize
- stakeAddressDeposit
- stakePoolDeposit
- poolRetireMaxEpoch
- stakePoolTargetNum
- poolPledgeInfluence
- monetaryExpansion
- treasuryCut
- minPoolCost
- utxoCostPerByte
- costModels
- executionUnitPrices
- maxTxExecutionUnits
- maxBlockExecutionUnits
- maxValueSize
- collateralPercentage
- maxCollateralInputs
- poolVotingThresholds
- dRepVotingThresholds
- committeeMinSize
- committeeMaxTermLength
- govActionLifetime
- govActionDeposit
- dRepDeposit
- dRepActivity
- minFeeRefScriptCostPerByte
-
Constitution
- with guardrail script
- without guardrail script
-
Credential
- key
- script
-
Delegatee
- pool
- drep
- pool + drep
-
DRep
- key
- script
- abstain
- no confidence
-
Boundary
- closed
- open