yoink について
yoink は、Base 上のオンチェーン旗取りゲームを操作するスキルです。コントラクトを呼び出して現在の保持者から旗を奪い、保持時間と奪取回数を記録します。状態確認や 10 分のクールダウン確認、Bankr 経由のトランザクション送信方法も扱います。
主な機能
- 01yoink() による旗の奪取
- 02現在の保持者と奪取時刻の照会
- 0310 分のクールダウン確認
- 04プレイヤーのスコアと奪取回数の確認
- 05Bankr 経由の奪取トランザクション送信
活用シーン
- 01旗の保持者とクールダウン終了を確認
- 02条件を満たした後に奪取を送信
- 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
ゲームルール
- 旗を Yoink する -
yoink()を呼び出して、現在の保持者から旗を奪います - クールダウン - Yoink の間隔を 10 分(600 秒)空ける必要があります
- 自分から Yoink しない - 自分から旗を Yoink することはできません
- 時間を蓄積する - 旗を保持している間、時間スコアが増加します
- トロフィーを競う - Yoink の累計回数が最も多いプレイヤーがトロフィー(トークン ID 2)を保持します
- 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 | アドレス + tokenId | uint256(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)で確認します
リソース
コメント
Markdown 対応