yoink

Par bankrbot · skills

Jouez à Yoink, un jeu de capture de drapeau onchain sur Base. Yoinkez le drapeau au détenteur actuel, consultez les statistiques de jeu et les classements, visualisez les scores des joueurs et partez à la conquête du trophée. Utilise Bankr pour l'exécution des transactions.

npx skills add https://github.com/bankrbot/skills --skill yoink

Yoink

Jouez à Yoink, un jeu capture-the-flag onchain sur Base. Yoink le drapeau du détenteur actuel pour démarrer votre chronomètre. Le joueur avec le plus de yoinks au total détient le trophée.

Contract: 0x4bBFD120d9f352A0BEd7a014bd67913a2007a878 sur Base (chain ID 8453)

Game Rules

  1. Yoink le drapeau - Appelez yoink() pour prendre le drapeau du détenteur actuel
  2. Cooldown - Vous devez attendre 10 minutes (600 secondes) entre les yoinks
  3. Pas d'auto-yoink - Vous ne pouvez pas yoink depuis vous-même
  4. Accumuler le temps - Tant que vous tenez le drapeau, votre score de temps augmente
  5. Concourir pour le trophée - Le joueur avec le plus de yoinks au total détient le trophée (token ID 2)
  6. Suivre les yoinks - Votre nombre total de yoinks est suivi séparément du temps

Contract Interface

RPC 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: Les adresses sont complétées à 32 bytes. score() retourne 96 bytes (3 × uint256).

Yoinking

Utilisez la fonction de transaction arbitraire de Bankr:

{
  "to": "0x4bBFD120d9f352A0BEd7a014bd67913a2007a878",
  "data": "0x9846cd9e",
  "value": "0",
  "chainId": 8453
}

Errors

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

Workflow

  • Requête lastYoinkedBy() et lastYoinkedAt() pour vérifier le statut/cooldown
  • Vérifiez que le cooldown est écoulé (600s) et que vous n'êtes pas le détenteur actuel
  • Soumettez la transaction yoink via Bankr
  • Vérifiez avec lastYoinkedBy() ou score(address)

Resources

Skills similaires