BananaTap · Provably Fair
Every tap is decided by a secret daily seed that is committed to before the day starts and revealed the next day. Nobody, including us, can pick or change a result after seeing who taps.
Today
Loading…
Verify a tap
Seeds are revealed after the day ends (UTC). Pick a past day, paste the wallet, and either list its taps or check one tap number.
How a tap is decided
- Daily seed. At 00:00 UTC the server draws 32 random bytes,
seed, and publishescommit = SHA-256(seed). The seed stays secret until the day is over. - Your tap's seed. Your n-th tap of the day uses
tapSeed = HMAC-SHA256(key = seed, message = "tap:<wallet>:<day>:<n>"). - Random stream. Block i =
SHA-256(tapSeed || i)(i as a 4-byte big-endian integer, i = 0, 1, 2…), read as unsigned 32-bit big-endian integers.nextInt(n)rejects values ≥ 2³² − (2³² mod n) and returnsv mod n;nextFloat()isv / 2³². - The result, in this order:
nothing = nextFloat() < 0.40;roll = nextInt(100000)→ rarity table;xpRoll = nextInt(100)→ XP table. Ifnothingis true the rarity roll is ignored. The banana's looks come from the same stream afterwards (re-rolled only if its DNA already exists; rarity never changes).
| Roll (of 100,000) | Rarity | Roll (of 100) | Pass XP |
|---|---|---|---|
| 0 – 54,999 | Common | 0 – 49 | +5 |
| 55,000 – 79,999 | Uncommon | 50 – 79 | +10 |
| 80,000 – 91,999 | Rare | 80 – 94 | +20 |
| 92,000 – 97,499 | Epic | 95 – 99 | +50 (crit) |
| 97,500 – 99,499 | Ultra Rare | ||
| 99,500 – 99,899 | Legendary | ||
| 99,900 – 99,989 | Mythic | ||
| 99,990 – 99,999 | Cosmic |
Tap XP is capped at 110 a day and Elite Pass holders get +10%; both apply after the roll. You can redo every step with any SHA-256 / HMAC library. Raw data: /fair/<day>, /fair/taps?day=&wallet=, /fair/verify?day=&wallet=&idx=.
What this proves
- The seed was fixed before anyone tapped:
SHA-256(seed)must equal the commitment published that morning. - Nothing was changed afterwards: the seed, your wallet and the tap number fully determine the result.
- The odds are the ones in the app: the tables above are the only tables.
If a day's seed is ever missing after that day, treat it as a broken promise.