FINCH
DOCS Open the app

FINCH documentation

FINCH is a reflex market on a live 3D map. Every 10 minutes a signal points to one ticket. The first wallet to grab it takes the round. This is how it all works, end to end.

Overview

FINCH turns a simple idea into a game: read a signal faster than everyone else. The map is filled with thousands of tickets in eight colors. A signal describes exactly one of them. Tap the right one first and the round pot settles to your wallet.

There is no token to buy and no trade to sign. You connect a wallet so the game knows where to send a payout, then you play with taps. Everything that decides a winner happens on the server, in the open.

Round length
10 minutes, on a fixed clock, 24/7
Per wallet
1 trade per round
Tickets
8 colors scattered across the map
Payout
100% of round fees to the winner

How a round works

Rounds are timed off a shared clock, so every player sees the same round start at the same second. The formula is round = floor(unix_seconds / 600). No round is ever "hosted" by one player; the clock is the referee.

The sequence

  • Signal drops. At the top of each 10-minute slot a new signal goes live. It points to exactly one ticket type.
  • You read and grab. Connect your wallet, pan the map, and tap the ticket you think the signal means. You get one trade for the round.
  • First correct trade wins. The earliest correct tap, by server timestamp, claims the round. Everyone else sees the round marked as taken.
  • Payout settles. The winning wallet is recorded, and the round fees are sent to it after the round closes.

Tickets & signals

There are eight ticket types on the map: 50% OFF, FREE, 2X, GOLDEN, BUY1GET1, 0 FEES, ???, and 10% OFF. Each round the signal is a short riddle that resolves to one of them.

The map is dense on purpose. Reading the signal is easy; finding the right ticket fast, under a shared countdown, is the game. Drag to explore the field, and tap once you are sure.

Fairness & security

The core rule of FINCH: the client can never forge a win. Your browser does not decide whether your tap was correct. It sends your wallet address and your chosen ticket to a server function, and the server does the checking.

  • Server-side answer check. A security-definer database function computes the current round and the target ticket on the server, then decides if your tap is correct. The public key shipped in the page cannot bypass it.
  • Row-level security. All tables are read-only to the public. No client can write a fake "correct" trade or insert itself as a winner.
  • One trade per wallet per round. Enforced by a unique constraint on (round, address) in the database, not by the UI.
  • Race-safe winner. The winner row uses the round number as its primary key, so exactly one wallet can claim a round even if two correct taps land in the same instant.
Known limitation

The signal-to-ticket mapping is currently deterministic and visible in the client, so a determined bot could win every round. This is fine for launch, and it is on the roadmap to move the signal list server-side and randomize it per round.

Fees & payouts

The round pot is made of the network fees gathered since the previous round. The winner takes 100% of that pot. There is no house cut on the winning side.

Payouts are sent by the FINCH treasury wallet after a round closes. Every winning trade and every payout is public on the app: winners show a PENDING badge until the transfer is confirmed, then flip to PAID.

Transparent by default

You never have to trust a private leaderboard. The winners table on the landing page reads directly from the same database the game writes to.

Wallet & privacy

Connecting a wallet in FINCH is read-only. The app calls eth_requestAccounts to learn your address so it knows where to send a payout. That is the entire interaction.

  • No signatures. FINCH never asks you to sign a message or approve a transaction to play.
  • No transfers from you. Value only ever moves toward the winner, never out of a player's wallet.
  • Only your address is stored. The database keeps your public address, the ticket you tapped, and a timestamp. Nothing else.
Good habit

Any site that asks you to sign or approve a transaction "to claim a reward" is a red flag. FINCH will never do that. If you see such a prompt, stop.

FAQ

Is connecting my wallet safe? +

Yes. FINCH only reads your public address to know where to send a payout. It never requests a signature or a transaction. Value only flows toward winners.

Do I need to buy a token? +

No. There is no FINCH token to purchase. You connect a wallet and play with taps. Rounds are free to enter.

How do I actually win? +

Be the first wallet to tap the correct ticket for the current signal. The earliest correct tap by server timestamp takes the round.

When do I get paid? +

After the round closes. Your win is recorded immediately with a PENDING badge, and the treasury wallet sends the fees, flipping the badge to PAID once confirmed.

What stops someone cheating from the browser? +

The win check runs on the server, tables are read-only to the public, and one-trade-per-round is a database constraint. The client cannot forge a correct trade.

Can a bot win every round? +

Today, potentially yes, because the signal mapping is visible in the client. Moving the mapping server-side and randomizing it per round is on the roadmap.

For developers

FINCH is a single static page plus a small database. The front end is one index.html (Three.js map, wallet, database client). The back end is one SQL file: two tables and a security-definer function that checks answers server-side.

Run it locally

npx serve web
# or
python3 -m http.server 8080 --directory web

With no database keys the site runs in DEMO mode: answers are checked locally and taps are unlimited, so you can explore the map without a backend.

Go live

  • Create a Supabase project and run supabase/schema.sql in the SQL editor.
  • Fill SUPABASE_URL and SUPABASE_ANON_KEY in the CONFIG block, and set LAUNCHED: true.
  • Deploy the web folder to any static host.

The mode chip in the signal bar flips from DEMO to LIVE once keys are present.

Roadmap

Where FINCH is headed. These are directions, not dated promises.

  • Server-side signals. Move the signal list off the client and randomize it per round to close the bot gap.
  • On-chain settlement option. An optional path where payouts settle through a verifiable contract instead of a manual treasury transfer.
  • Leaderboard & streaks. Track wins per wallet over time and reward consistency.
  • Mobile-native app. A dedicated app so the map and taps feel first-class on a phone.