For the complete documentation index, see llms.txt. This page is also available as Markdown.

Utility Functions

Anvil Utility Functions

Anvil provides several utility endpoints to simplify common operations when building Cardano applications. These endpoints handle tasks like address parsing, native script analysis, and time-slot conversions.

See full examples of the utility functions in the examples repository.

Quick Reference

Category
Function
Endpoint
Purpose

POST /utils/addresses/parse

Extract payment and stake key hashes from Cardano addresses

POST /addresses/info

Extract payment and stake hashes with script detection for transaction building

POST /utils/native-scripts/parse

Calculate policy ID from native script

POST /utils/native-scripts/serialize

Create native script from JSON schema

POST /utils/network/slot-to-time

Convert slot number to timestamp

POST /utils/network/time-to-slot

Convert timestamp to slot number

Available Utility Endpoints

Address Utilities

POST /utils/addresses/parse

What It Does:

  • Extracts payment and stake key hashes from Cardano addresses

Parameters:

  • address: Bech32 or hex encoded address

Returns:

  • payment: Payment key hash (hex encoded)

  • stake: Optional stake key hash (hex encoded)

Common Use Case:

  • Getting the payment key hash from a wallet address for native scripts

  • Extracting stake key hash for delegation operations

TypeScript Example: Parse an address

POST /addresses/info

What It Does:

  • Returns detailed information about a Cardano address including payment and stake hashes

  • Detects whether payment and stake hashes are script-based or key-based

Parameters:

  • address: Bech32 or hex encoded address

Returns:

  • payment: Object containing payment hash information

    • hash: Payment hash (hex encoded)

    • isScript: Boolean indicating if payment hash is a script hash

  • stake: Optional object containing stake hash information

    • hash: Stake hash (hex encoded)

    • isScript: Boolean indicating if stake hash is a script hash

Common Use Cases:

  • Transaction Building: Extract payment hashes for transaction inputs/outputs and stake hashes for delegation

  • Address Analysis: Determine if an address uses script hashes for smart contract interactions

  • Multi-signature Setup: Identify key hashes for multi-sig wallet configurations

  • Staking Management: Extract stake hashes for delegation to different stake pools

  • Policy Creation: Use payment hashes as conditions in native script minting policies

TypeScript Example: Get address information

Native Script Utilities

POST /utils/native-scripts/parse

What It Does:

  • Calculates policy ID and returns policy ID from the provided native script

Parameters:

  • script: Hex encoded native script

Returns:

  • policyId: The hash of the script (policy ID)

Common Use Case:

  • Extracting a policy ID from a minting script

  • Verifying script properties before transaction submission

TypeScript Example: Get policy ID from a native script

POST /utils/native-scripts/serialize

What It Does:

  • Converts a native script JSON schema into CBOR hex-encoded format and generates its policy ID

  • Essential for creating minting policies that can be used in transactions

Parameters:

Returns:

  • policyId: The hash of the script - this becomes your token's policy ID

  • script: The CBOR hex-encoded script ready for transactions

Common Use Cases:

  • Creating minting policies for NFT collections

  • Setting up time-locked or multi-signature token policies

TypeScript Example: Create a time-locked minting policy

Network Time Utilities

POST /utils/network/slot-to-time

What It Does:

  • Converts a Cardano slot number to a timestamp

Parameters:

  • slot: Absolute slot number

Returns:

  • time: Unix timestamp in milliseconds (UTC)

Common Use Case:

  • Converting slot-based time locks to human-readable DateTimes

  • Displaying blockchain time information to users

TypeScript Example: Convert a slot to a timestamp

POST /utils/network/time-to-slot

What It Does:

  • Returns the enclosing slot of the provided timestamp

Parameters:

  • time: Unix timestamp in milliseconds (UTC)

Returns:

  • slot: Absolute slot number

Common Use Case:

  • Setting expiration times for minting policies

  • Creating time-bounded transactions

  • Creating time-bounded transactions

TypeScript Example: Convert a timestamp to a slot

Best Practices

  1. Environment Awareness

    • Remember that slot calculations differ between Mainnet, Preprod, and Preview

    • Always use the appropriate network endpoint for your target environment

  2. Error Handling

    • Always check for error responses from utility endpoints

    • Handle edge cases appropriately in your application logic

  3. Caching

    • Consider caching results from utility functions when appropriate

    • This can reduce API calls and improve application performance

Last updated

Was this helpful?