TrustMeBro
How far will you go?
Created on 1st December 2025
•
TrustMeBro
How far will you go?
The problem TrustMeBro solves
Problem It Solves
The Trust Problem in Online Gaming
Traditional online betting platforms operate as black boxes. Players have no way to verify if outcomes are fair, if the house is manipulating results, or if their funds
are actually secure. You're essentially trusting a faceless operator with your money.
How TrustMeBro Fixes This
Provably Fair Outcomes
Every game uses a commit-reveal scheme. The result is determined before you play, and you can verify it on-chain after. No manipulation possible.
Non-Custodial Play
Your funds stay in your wallet until you bet. No deposits to sketchy platforms. No withdrawal delays. Cash out instantly, anytime.
Transparent Odds
The multiplier formula is public: 1 / (1 - 1/n). You know exactly what you're getting into. 2 tiles = 2x multiplier, 50% survival. Simple math, no hidden edges.
On-Chain Verification
Every game, every outcome, every payout is recorded on the blockchain. Audit it yourself. The smart contract is the house, and the house can't cheat.
The Game
Navigate 20 rounds of tile selection. Each round has 2-5 tiles with one death tile hidden among them. Survive = multiply your bet. Hit the death tile = lose everything.
Cash out anytime or push your luck for bigger rewards.
It's not about trusting us. It's about verifying it yourself.
Challenges we ran into
Challenges I Ran Into
Prisma 7 Database Connection Issues
Prisma 7 introduced a new adapter-based connection system that broke our existing Neon PostgreSQL setup. The error "No database host or connection string was set" kept
appearing despite correct configuration. Had to downgrade to Prisma 6.19.0 and revert to the traditional url = env("DATABASE_URL") approach.
Smart Contract Transaction Flow
Figuring out who signs what was tricky. The contract uses onlyBackend modifiers for cashOut() and markGameAsLost() functions, meaning the frontend can't call these
directly. Had to restructure the backend to handle contract calls server-side while keeping createGame() as a user-signed transaction.
Commit-Reveal Scheme Implementation
Ensuring provable fairness required careful coordination between frontend, backend, and smart contract. The seed must be generated before the game, hashed for
commitment, stored securely, and only revealed after game completion — all while keeping the flow seamless for users.
Farcaster Frame Integration
Getting the OG image to render in cast embeds was painful. Next.js ImageResponse requires explicit display: 'flex' on every div with multiple children. Also had to
separate the base URL (for OG images) from the miniapp URL (for CTA links) since Farcaster fetches metadata from the embed URL directly.
Farcaster SDK vs URL Redirect
Initially used Warpcast URL intents for sharing, but this opened a redirect and allowed users to edit cast text. Switched to sdk.actions.composeCast() for native
in-app casting with pre-filled content and frame embeds.
Environment Configuration for Vercel
Managing multiple URLs was confusing — Vercel domain for API/OG routes, Farcaster miniapp URL for user-facing links, and local tunnel URLs for testing. Had to introduce
separate NEXT_PUBLIC_BASE_URL and NEXT_PUBLIC_APP_URL environment variables.
Technologies used
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
