Play Yoink, an onchain capture-the-flag game on Base. Yoink the flag from the current holder, check game stats and leaderboards, view player scores, and compete for the trophy. Uses Bankr for transaction execution.
Play Yoink, an onchain capture-the-flag game on Base. Yoink the flag from the current holder to start your clock. The player with the most total yoinks holds the trophy.
Contract: 0x4bBFD120d9f352A0BEd7a014bd67913a2007a878 on Base (chain ID 8453)
yoink() to take the flag from the current holderRPC template:
curl -s -X POST https://mainnet.base.org -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x4bBFD120d9f352A0BEd7a014bd67913a2007a878","data":"SELECTOR+PARAMS"},"latest"],"id":1}' | jq -r '.result'
| Function | Selector | Params | Returns |
|---|---|---|---|
yoink() | 0x9846cd9e | - | (write) |
lastYoinkedBy() | 0xd4dbf9f4 | - | address |
lastYoinkedAt() | 0x6a99616f | - | uint256 timestamp |
totalYoinks() | 0xa5d0dadd | - | uint256 |
topYoinker() | 0x6a974e6e | - | address (trophy holder) |
mostYoinks() | 0xd2d7774a | - | uint256 (record) |
COOLDOWN() | 0xa2724a4d | - | uint256 (600) |
score(address) | 0x776f3843 | addr (32B padded) | (yoinks, time, lastYoinkedAt) |
balanceOf(address,uint256) | 0x00fdd58e | addr + tokenId | uint256 (FLAG_ID=1, TROPHY_ID=2) |
Encoding: Addresses are zero-padded to 32 bytes. score() returns 96 bytes (3 × uint256).
Use Bankr's arbitrary transaction feature:
{
"to": "0x4bBFD120d9f352A0BEd7a014bd67913a2007a878",
"data": "0x9846cd9e",
"value": "0",
"chainId": 8453
}
| Error | Selector | Meaning |
|---|---|---|
SlowDown(uint256) | 0x58d6f4c6 | Cooldown not elapsed. Param = seconds remaining. |
Unauthorized() | 0x82b42900 | You already hold the flag. |
Cooldown check: current_time - lastYoinkedAt() >= 600
lastYoinkedBy() and lastYoinkedAt() to check status/cooldownlastYoinkedBy() or score(address)