SkillAgentSearch skills...

Vodka

Provide utility function for aiken onchain validation and testing utility

Install / Use

/learn @sidan-lab/Vodka
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <hr /> <h2 align="center" style="border-bottom: none"><img style="position: relative; top: 0.25rem;" src="https://raw.githubusercontent.com/sidan-lab/brand_assets/main/sidan_square.png" alt="Aiken" height="30" /> Vodka - Library for Aiken Development</h2>

Licence Continuous Integration Twitter/X

<hr/> </div>

Vodka is a library build for Aiken development. It offers

  1. Cocktail - Validating utils in writing on-chain code in aiken
  2. Mocktail - Unit test utils for easy building mock value for unit test

Start mixing

Simply run

aiken add sidan-lab/vodka --version 0.1.23

or putting the below in you aiken.toml

[[dependencies]]
name = "sidan-lab/vodka"
version = "0.1.23"
source = "github"

Version

Vodka is now upgraded to support latest PlutusV3 with latest version, if you want to use the old version compatible for legacy aiken version, please refer to below's table

| Vodka | Aiken Compiler | aiken-lang/stdlib | | ---------- | -------------- | ------------------- | | 0.1.23 | ^v1.1.9 | v2.2.0 | | 0.1.6 | ^v1.1.5 | v2.1.0 | | 0.0.1-beta | v1.0.29-alpha | v1.9.0 |

Vodka is pure and simple

For your transaction.

let Transaction { inputs, outputs, extra_signatories, .. } = context.transaction

Locating inputs & outputs:

when (inputs_at(inputs, target_address), outputs_at(outputs, target_address)) is {
  ([only_input], [only_output]) -> ...
  _ -> False
}

Checking signature with:

key_signed(extra_signatories, key_hash_required)

Imports and function groups

All onchain utility functions can be imported from cocktail and are grouped with a naming convention of vodka_<type>.

use cocktail.{<the_util_fn>}

| Type | Naming Convention | | ------------------------------------ | ----------------------------------------- | | Address | vodka_address.{<the_util_fn>} | | Value | vodka_value.{<the_util_fn>} | | transaction.extra_signatories | vodka_extra_signatories.{<the_util_fn>} | | transaction.inputs | vodka_inputs.{<the_util_fn>} | | transaction.mints | vodka_mints.{<the_util_fn>} | | transaction.outputs | vodka_outputs.{<the_util_fn>} | | transaction.redeemers | vodka_redeemers.{<the_util_fn>} | | transaction.validity_range | vodka_validity_range.{<the_util_fn>} | | ByteArray and Int conversion & utils | vodka_converter.{<the_util_fn>} |

Taste it before vodka cocktail, mocktail can be mixed, blended and Mesh

Building unit testing in vodka, easily indicating how you should build in whisky and Mesh.

You can taste if your transaction can pass your aiken contract validation:

# Mock transaction
let mock_tx: Transaction = mocktail_tx()
    ...
    |> required_signer_hash(is_key_provided, mock_pub_key_hex(1))
    |> complete()

Then move it to blend a whisky:

let mut tx = MeshTxBuilder::new_core()
tx.spending_plutus_script_v2()
  ...
  .required_signer_hash(key_hash)
  .complete(None)

Or Mesh:

const txBuilder = new MeshTxBuilder();
await txBuilder
  ...
  .requiredSignerHash(keyHash)
  .complete();

CIP Support

All CIP supporting utility can be imported under cip

use cip.{cip68_100}

let reference_token_name = cip68_100(asset_name)

Documentation

Please refer to the hosted documentation.

Alt

View on GitHub
GitHub Stars29
CategoryDevelopment
Updated1mo ago
Forks3

Languages

Gleam

Security Score

90/100

Audited on Feb 20, 2026

No findings