FAQ

Luckotto platform FAQ

Answers for partner owners, integrators, support teams, and operators working with the monolithic Luckotto app.

Start here

What should I read first?

Start with How Luckotto works, then open the embed how-to-play page to see the player-facing version. Use the verifier for resolved rounds.

What is a ticket?

A ticket is a selected set of six Luckotto tiles plus a round-local UUID ticket id. It has zero draw weight until Bitcoin payment confirms.

Does every partner get a separate prize pool?

No. All partners sell into the same global round. The prize pool is the sum of ticket draw weights — what players paid minus partner fees.

How does a ticket win?

The weekly draw eliminates losing tiles from the final CSV using draw weight until one tile set remains. If multiple tickets share that tile set, a final weighted sample picks the winning ticket UUID.

Embed and player flow

What does the iframe do?

The iframe is the /embed player UI served by the same app. Partners embed it with public query params for partner, playerUname, and playerIdentifier.

Does the iframe use the API key?

No. Every API operation used by the iframe is public and works from partner payout address, playerUname, playerIdentifier, and deposit address context without an API key.

Do players log in to Luckotto?

No. Partners own their player account systems. Luckotto receives only playerUname and player identifier values from the partner context.

What information is public?

Round data, funded tickets, partner display metadata, partner payout addresses, playerUname, prices, fees, and ticket IDs can be public. The player identifier is a per-player secret and is never exposed on public surfaces — public surfaces show only playerUname.

Deposits, rounds, and verification

Are deposit addresses public?

Deposit addresses are scoped to one ticket request, and late payments to old addresses are credited forward instead of refunded.

What happens after payment confirmation?

The scanner records confirmed payments. On-time payments fund the selected ticket; late payments roll the same tiles into the next available round for that player.

Does partner metadata affect winner selection?

No. Winner selection depends on the committed final CSV order, the draw block hash, and ticket IDs, not partner metadata, API keys, playerUname, or player identifier.

How is the draw checked?

The verifier recreates the final CSV hash, replays the weighted elimination draw from the draw block hash, and checks that the stored draw tiles match the winning ticket.

Can old rounds be verified?

Yes. Resolved round pages keep the CSV commitment, commitment block, draw block, draw tiles, public tickets, winning ticket, and payout fields available for review.

Partner integration

How do partners authenticate?

Each partner has one static API key for trusted server-side calls to /api/luckotto/tickets/authenticated. It is created and rotated in the website, but it must never be placed in iframe URLs or browser code.

Where is the API?

The monolith exposes a small JSON REST API under /api/luckotto for address reservation, Luckotto ticket lookup, round data, and trusted server-side ticket creation.

Where do background jobs run?

Scanner, mempool, settlement, and reset jobs are root package commands. Production can run the scanner loop inside server.ts with RUN_WORKER=true.