Farchess
Chess on the blockchain: Play, stake, win !
Created on 21st July 2025
•
Farchess
Chess on the blockchain: Play, stake, win !
The problem Farchess solves
I created the Farcaster chess platform, a revolutionary experience in the Web3 world running on the Base blockchain, blending my passion for chess with cutting-edge technology. On this platform, on-chain solutions ensure that every move, reward, and transaction is transparent, secure, and verifiable, with smart contracts automatically handling payments and payouts. Players can use Chess Tokens, which I designed, to participate, giving them true ownership of their digital assets. Beyond challenging AI opponents, the platform offers thrilling player vs. player modes, catering to chess lovers of all skill levels. As an online play-to-earn game, it rewards strategic brilliance with tangible benefits, fueling my love for chess and creating an engaging community for enthusiasts. I’m currently organizing the first “One Million Chess Party,” a groundbreaking event where players can join using Chess Tokens, with winnings instantly distributed via smart contracts.
Smart Contract Address(es)
- GameStake.sol
Deployed Address: 0x0978B77aa0Acadf59ee2fBf7cC663701E1dB9E9D
Main Token: $CHESS (0x47AF…)
Purpose: Manages stakes for PvP matches.
Operational Logic:
When a user wants to start a staked PvP match, the frontend first requests an approval transaction from the user, allowing the GameStake contract to deduct 10,000 Chess Tokens from their account.
The frontend then calls the contract’s stakeAndPlay() function.
The stakeAndPlay() function executes a transferFrom call to move 10,000 Chess Tokens from the user’s wallet to the GameStake contract address.
Key Note: This contract is currently responsible only for collecting stakes. Payouts are handled by the PvPPayout contract. - DailyReward.sol
Deployed Address: 0xa5c59fb76f3e2012dfd572739b9d5516034f1ff8
Main Token: $CHESS (0x47AF…)
Purpose: Manages the secure, user-initiated claiming of a daily 10,000 Chess Token reward.
Operational Logic:
The user clicks the “Claim Daily Reward” button.
The frontend requests a signature (“voucher”) from the /api/generate-claim-signature endpoint.
The frontend calls the DailyReward contract’s claimWithSignature() function, presenting the signed voucher.
The contract verifies the signature’s validity, and if everything checks out, it transfers 10,000 Chess Tokens from the DailyReward contract’s balance to the user’s wallet.
Key Note: The contract must have sufficient Chess Tokens to cover payouts. It needs to be funded from the Treasury wallet. - PvPPayout.sol
Deployed Address: 0xee14ec2ca8508885ec67498a71c0dedb45f921f5
Main Token: $CHESS (0x47AF…)
Purpose: Manages the secure, user-initiated claiming of PvP match winnings (20,000 Chess Tokens for a victory, 10,000 Chess Tokens for a draw).
Operational Logic:
After a game ends, the user clicks the “Claim Winnings” button on the PvPVictoryScreen component.
The frontend requests a signature (“voucher”) from the /api/pvp/generate-payout-voucher endpoint.
The frontend calls the PvPPayout contract’s claimPayout() function, presenting the signed voucher.
The contract verifies the signature’s validity, and if everything is valid, it transfers the appropriate winnings amount from the PvPPayout contract’s balance to the user’s wallet.
Key Note: Stakes from the GameStake contract must be transferred to the PvPPayout contract (manually or via an automated process) to ensure the prize pool is available.
Additional Contracts
PvPRefund: 0xc57a0151611e35bfeba0d3cf2106bc2413077c59
ClaimReward: 0x886b5344a01490d8488194b7bef7b45ae0f0c586
Tracks Applied (1)
Top 5 New Mini Apps
Technologies used
