mcpField
Y
yoink

yoink

github.com/bankrbotその他1.2k196 回インストール5 日前に更新
リポジトリ

yoink について

yoink は、Base 上のオンチェーン旗取りゲームを操作するスキルです。コントラクトを呼び出して現在の保持者から旗を奪い、保持時間と奪取回数を記録します。状態確認や 10 分のクールダウン確認、Bankr 経由のトランザクション送信方法も扱います。

主な機能

  1. 01yoink() による旗の奪取
  2. 02現在の保持者と奪取時刻の照会
  3. 0310 分のクールダウン確認
  4. 04プレイヤーのスコアと奪取回数の確認
  5. 05Bankr 経由の奪取トランザクション送信

活用シーン

  1. 01旗の保持者とクールダウン終了を確認
  2. 02条件を満たした後に奪取を送信
  3. 03奪取結果とプレイヤースコアを検証

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/yoinkを入力して読み込まれたか確認します。

同梱ファイルcatalog.json

詳細

Yoink

Base 上のオンチェーン旗取りゲーム「Yoink」をプレイしましょう。現在の保持者から旗を Yoink すると、時間の計測が始まります。Yoink の累計回数が最も多いプレイヤーがトロフィーを保持します。

コントラクト: Base(チェーン ID 8453)上の 0x4bBFD120d9f352A0BEd7a014bd67913a2007a878

ゲームルール

  1. 旗を Yoink する - yoink() を呼び出して、現在の保持者から旗を奪います
  2. クールダウン - Yoink の間隔を 10 分(600 秒)空ける必要があります
  3. 自分から Yoink しない - 自分から旗を Yoink することはできません
  4. 時間を蓄積する - 旗を保持している間、時間スコアが増加します
  5. トロフィーを競う - Yoink の累計回数が最も多いプレイヤーがトロフィー(トークン ID 2)を保持します
  6. Yoink 回数を記録する - Yoink の累計回数は時間とは別に記録されます

コントラクトインターフェース

RPC テンプレート:

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'
関数セレクターパラメーター戻り値
yoink()0x9846cd9e-(書き込み)
lastYoinkedBy()0xd4dbf9f4-アドレス
lastYoinkedAt()0x6a99616f-uint256 タイムスタンプ
totalYoinks()0xa5d0dadd-uint256
topYoinker()0x6a974e6e-アドレス(トロフィー保持者)
mostYoinks()0xd2d7774a-uint256(記録)
COOLDOWN()0xa2724a4d-uint256(600)
score(address)0x776f3843アドレス(32B パディング)(Yoink 回数、時間、lastYoinkedAt)
balanceOf(address,uint256)0x00fdd58eアドレス + tokenIduint256(FLAG_ID=1、TROPHY_ID=2)

エンコード: アドレスは 32 バイトになるようゼロパディングされます。score() は 96 バイト(uint256 × 3)を返します。

Yoink の実行

Bankr の任意トランザクション機能を使用します。

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

エラー

エラーセレクター意味
SlowDown(uint256)0x58d6f4c6クールダウンが経過していません。パラメーターは残り秒数です。
Unauthorized()0x82b42900すでに旗を保持しています。

クールダウンの確認: current_time - lastYoinkedAt() >= 600

ワークフロー

  • lastYoinkedBy() と lastYoinkedAt() を照会して、状態とクールダウンを確認します
  • クールダウン(600 秒)が経過しており、自分が現在の保持者ではないことを確認します
  • Bankr 経由で Yoink トランザクションを送信します
  • lastYoinkedBy() または score(address) で確認します

リソース

コメント