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.
Answers for partner owners, integrators, support teams, and operators working with the monolithic Luckotto app.
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.
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.
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.
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.
The iframe is the /embed player UI served by the same app. Partners embed it with public query params for partner, playerUname, and playerIdentifier.
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.
No. Partners own their player account systems. Luckotto receives only playerUname and player identifier values from the partner context.
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.
Deposit addresses are scoped to one ticket request, and late payments to old addresses are credited forward instead of refunded.
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.
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.
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.
Yes. Resolved round pages keep the CSV commitment, commitment block, draw block, draw tiles, public tickets, winning ticket, and payout fields available for review.
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.
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.
Scanner, mempool, settlement, and reset jobs are root package commands. Production can run the scanner loop inside server.ts with RUN_WORKER=true.