Registration is open!

Buidler Fest tickets are now available. To purchase your Buidler Fest ticket you need to submit a transaction to Cardano mainnet.

Tickets

PURCHASED

60

AVAILABLE

60

Why so complex? 😭 I just want my ticket

Buidler Fest is a technical conference — a nerd gathering of sorts. It is customary to have a technical challenge that will grant you safe passage to the event. It's a sacrifice (of time) to keep the Cryptography gods happy.

We know, the challenge for this edition is harder than previous ones, but we think that the best way to improve Cardano is by using it as intended. Although the mechanism is minimalistic, it is a fully functional ticketing system.

Make sure you complete our KYC form to complete the registration once you finish your purchase transaction.

The purchase transaction

Tickets are represented as Cardano native tokens. Each ticket is an NFT associated to a unique, sequential number. The ownership of this NFT is transferred to the buyer when the transaction is submitted.

The ticket NFT is issued by an on-chain script that ensures that ticket tokens are minted according to the rules of the event.

Transaction diagram

Let's break down the transaction:

Parties

We have 3 parties involved in the transaction:

  • buyer: You, the one who wants to purchase the ticket.
  • issuer: The script responsible for validating the minting of the ticket NFT.
  • treasury: A holding account that will receive the ADA for all ticket purchases.

Inputs

The transaction takes 2 inputs:

  • funds: This input represents the funds for the ticket purchase and must contain enough ADA to cover the ticket price and transaction fees.
  • current state: This input contains the current state of the whole registration process (a datum with the current ticket count)

Outputs

The transaction has 3 outputs:

  • ticket + change: This output contains the minted ticket NFT and whatever change is left over from the payment.
  • new state: This output contains the updated state of the registration process (the same datum with an incremented ticket count)
  • payment: This output contains the ADA for the ticket purchase.

Shared State

The registration process makes use of a shared state to control the minting. There's an inline datum stored at a specific UTxO that holds the value of the total number of already purchased tickets.

Whenever a new ticket is purchased, this UTxO is consumed and a new one is created with a similar datum that holds the incremented number of tickets.

The structure of the datum is the following (using cardano-cli JSON notation):

{
  "constructor": "0",
  "fields": [
    {
      "int": "<next ticket number>"
    }
  ]
}

(where <next ticket number> holds the integer value that represents the next ticket to be minted)

To find the specific UTxO that holds the state, we use a "beacon token". This is a unique NFT that allows you to pinpoint the required UTxO within the issuer's address.

Constraints

For the tx to be valid, you need to make sure you comply with all the requirements enforced by the issuer script. These are:

  • The transaction must pay the ticket price to the treasury
  • The shared state ticket counter must be incremented by exactly 1
  • The ascii name of the ticket asset must be TICKET{x} where {x} is the ticket number
  • Ticket price must be:
    • 400 ADA if submitted before 2026-Feb-01 12:00 UTC
    • 500 ADA if submitted since 2026-Feb-01 12:00 UTC

Gotchas

  • You'll need to add collateral to your transaction (since it runs scripts)
  • You can use a script reference to provide the script (see quick reference below)
  • There could be contention of the shared state, make sure you don't have a stale UTxO when sending your Tx.
  • You need to specify an upper bound for the validity range, which is used by the script to decide the price value.
  • The number of your ticket NFT must be equal to the number in the state datum.

Quick Reference

FieldValue
ISSUER BEACON POLICYe1ddde8138579e255482791d9fba0778cb1f5c7b435be7b3e42069de
ISSUER BEACON NAME425549444c45524645535432303236 (hex)
TREASURYaddr1qx0decp93g2kwym5cz0p68thamd2t9pehlxqe02qae5r6nycv42qmjppm2rr8fj6qlzfhm6ljkd5f0tjlgudtmt5kzyqmy8x82
ISSUER SCRIPT REF31596ecbdcf102c8e5c17e75c65cf9780996285879d18903f035964f3a7499a8#0
TICKET POLICY1d9c0b541adc300c19ddc6b9fb63c0bfe32b1508305ba65b8762dc7b
ISSUERaddr1wywecz65rtwrqrqemhrtn7mrczl7x2c4pqc9hfjmsa3dc7cr5pvqw

Getting Help

Tx3 Tutorial

You can use any tool you're familiar with to construct and submit the transaction. The information provided in this page should be enough.

If you want something already working, you clone our tutorial repo and follow the README to purchase the ticket using the Tx3 toolkit.

https://github.com/txpipe/buidler-fest-2026-buy-ticket

TxPipe's Discord

You can join TxPipe's discord using this link:

https://discord.gg/eVc6HJrYmP

You'll find that there's a #buidler-fest channel with organizers and other participants to answer any technical or non-technical questions.

Example Transactions

Validator's code

If you want to check any details of the on-chain validation, you can find the Aiken source code in here:

https://github.com/txpipe/buidler-fest-2026-buy-ticket/tree/main/onchain