aiken/examples/acceptance_tests/script_context/v3
rvcas 3fac7002d4
feat: switch mint to new def
2024-08-25 16:20:05 +02:00
..
ctx feat: switch mint to new def 2024-08-25 16:20:05 +02:00
validators feat: switch mint to new def 2024-08-25 16:20:05 +02:00
.gitignore Do not ignore ctx/inputs.cbor; it is used/needed by the test runner. 2024-08-14 03:09:45 +02:00
README.md Fix script context translations for withdrawals and validity intervals. 2024-08-13 23:43:47 +02:00
aiken.lock Fix ordering for ScriptInfo type 2024-08-25 16:20:05 +02:00
aiken.toml Fix script context translations for withdrawals and validity intervals. 2024-08-13 23:43:47 +02:00
plutus.json Fix ordering for ScriptInfo type 2024-08-25 16:20:05 +02:00
test.sh (temporarily) make script context tests more verbose. 2024-08-14 03:02:40 +02:00

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 and ctx/{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
    • 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
  • 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