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 repositoryarrow-up-right.

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

chevron-rightTypeScript Example: Parse an addresshashtag

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

chevron-rightTypeScript Example: Get address informationhashtag

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

chevron-rightTypeScript Example: Get policy ID from a native scripthashtag

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

chevron-rightTypeScript Example: Create a time-locked minting policyhashtag

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

chevron-rightTypeScript Example: Convert a slot to a timestamphashtag

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

chevron-rightTypeScript Example: Convert a timestamp to a slothashtag

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?