basket-settle
vara-walletを通じて、決済担当者(settler)がバスケット取引の提案や最終決定を行う必要がある場合に利用し、決済担当者権限がない場合は使用できない、専門的な業務を支援するSkill。
📜 元の英語説明(参考)
Use when the agent has the settler role and needs to propose or finalize a basket settlement via vara-wallet. Do not use without settler role permissions. Do not use for regular user actions.
🇯🇵 日本人クリエイター向け解説
vara-walletを通じて、決済担当者(settler)がバスケット取引の提案や最終決定を行う必要がある場合に利用し、決済担当者権限がない場合は使用できない、専門的な業務を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o basket-settle.zip https://jpskill.com/download/9666.zip && unzip -o basket-settle.zip && rm basket-settle.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9666.zip -OutFile "$d\basket-settle.zip"; Expand-Archive "$d\basket-settle.zip" -DestinationPath $d -Force; ri "$d\basket-settle.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
basket-settle.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
basket-settleフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Basket Settle
PolyBasketsのバスケットの決済を提案し、確定します。settlerロールが必要です。
セットアップ
メインネットのみ。 他の操作を行う前に、必ず vara-wallet config set network mainnet を実行してください。テストネットに切り替えないでください。契約が存在しません。
vara-wallet config set network mainnet
BASKET_MARKET="0x1fa6fd12433accef350a68da4555a2a71acab261c4ae9eb713033023fc0775ea"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"
Settlerロールの確認
コントラクト設定で settler_role として割り当てられたアドレスのみが、決済メソッドを呼び出すことができます。
# settlerロールを持つユーザーを確認
vara-wallet call $BASKET_MARKET BasketMarket/GetConfig --args '[]' --idl $IDL | jq '.settler_role'
# エージェントのアドレスを確認
vara-wallet wallet list | jq -r '.[0].address'
あなたのアドレスが settler_role と一致しない場合、決済を行うことはできません。管理者に連絡してください。
決済フロー
1. バスケットがActiveであることを確認
2. すべてのアイテムがPolymarketで解決されていることを確認
3. ProposeSettlement → 12分間のチャレンジ期間を開始
4. challenge_deadline が経過するのを待つ
5. FinalizeSettlement → バスケットがSettledになり、ユーザーが請求できるようになる
ステップ 1: バスケットのステータスを確認
vara-wallet call $BASKET_MARKET BasketMarket/GetBasket \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok.status'
"Active" である必要があります。
ステップ 2: Polymarketの解決状況を確認
バスケット内の各アイテムについて、Polymarketでマーケットが解決されているかどうかを確認します。
curl -s "https://gamma-api.polymarket.com/markets?slug=<poly_slug>" | jq '.[0] | {closed, outcomePrices}'
すべてのアイテムが解決済みである必要があり (closed: true)、最終価格は0または1に近い必要があります。
ステップ 3: 決済の提案
item_resolutions 配列を作成します。バスケットアイテムごとに1つの ItemResolution を含めます。
{
"item_index": 0,
"resolved": "YES",
"poly_slug": "will-btc-hit-100k",
"poly_condition_id": "0xabc123...",
"poly_price_yes": 9900,
"poly_price_no": 100
}
ルール:
- バスケットアイテムごとに正確に1つの解決策を提供します
item_indexは0から始まり、一意である必要があり、バスケットアイテムの範囲内である必要がありますpoly_slugはバスケットアイテムのslugと正確に一致する必要がありますpoly_price_yes+poly_price_noは、最終的なPolymarket価格をbpsで反映する必要がありますresolvedは最終的な結果です:"YES"または"NO"poly_condition_idはオプションです
例: 2アイテムのバスケットの決済を提案
vara-wallet --account agent call $BASKET_MARKET BasketMarket/ProposeSettlement --voucher $VOUCHER_ID \
--args '[
0,
[
{
"item_index": 0,
"resolved": "YES",
"poly_slug": "will-btc-hit-100k",
"poly_condition_id": null,
"poly_price_yes": 9900,
"poly_price_no": 100
},
{
"item_index": 1,
"resolved": "NO",
"poly_slug": "will-eth-hit-5k",
"poly_condition_id": null,
"poly_price_yes": 200,
"poly_price_no": 9800
}
],
"Resolved via Polymarket API"
]' \
--idl $IDL
提案後、バスケットは SettlementPending ステータスになり、12分間のチャレンジ期間が開始されます。
ステップ 4: チャレンジ期間を待つ
# チャレンジの締め切りを確認
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok | {status, challenge_deadline, proposed_at}'
challenge_deadline はブロックのタイムスタンプです。有効期間は liveness_ms で設定されます (デフォルトは720000ms = 12分)。
現在のブロックのタイムスタンプが challenge_deadline を超えるまで待ちます。
ステップ 5: 決済の確定
vara-wallet --account agent call $BASKET_MARKET BasketMarket/FinalizeSettlement --voucher $VOUCHER_ID \
--args '[<basket_id>]' --idl $IDL
確定後:
- バスケットのステータスが
Settledになります finalized_atが設定されます- ユーザーは
../basket-claim/SKILL.mdを介してペイアウトを請求できるようになります
確認
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok | {status, payout_per_share, finalized_at}'
よくあるエラー
| エラー | 原因 | 解決策 |
|---|---|---|
Unauthorized |
settlerロールではない | settler_roleアドレスの設定を確認してください |
BasketNotActive |
バスケットがすでに決済中 | ステータスを確認してください |
SettlementAlreadyExists |
すでに提案済み | 待って確定してください |
InvalidResolutionCount |
解決策の数が間違っている | アイテムごとに1つ提供してください |
ResolutionSlugMismatch |
Slug がバスケットアイテムと一致しない |
バスケットから正確な slug を使用してください |
DuplicateResolutionIndex |
同じ item_index が2回使用されている |
インデックスを一意にしてください |
ResolutionIndexOutOfBounds |
インデックス >= アイテム数 | 0 から items.length-1 を使用してください |
ChallengeDeadlineNotPassed |
確定するには早すぎる | チャレンジ期間を待ってください |
SettlementNotProposed |
提案が存在しない | 最初に提案してください |
SettlementNotFinalized |
決済がまだ確定されていない | チャレンジ期間後に FinalizeSettlement を呼び出してください |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Basket Settle
Propose and finalize settlement for PolyBaskets baskets. Requires the settler role.
Setup
MAINNET ONLY. Run vara-wallet config set network mainnet before anything else. NEVER switch to testnet — there are no contracts there.
vara-wallet config set network mainnet
BASKET_MARKET="0x1fa6fd12433accef350a68da4555a2a71acab261c4ae9eb713033023fc0775ea"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"
Verify Settler Role
Only the address assigned as settler_role in the contract config can call settlement methods.
# Check who has settler role
vara-wallet call $BASKET_MARKET BasketMarket/GetConfig --args '[]' --idl $IDL | jq '.settler_role'
# Check agent's address
vara-wallet wallet list | jq -r '.[0].address'
If your address does not match settler_role, you cannot settle. Contact the admin.
Settlement Flow
1. Check basket is Active
2. Verify all items have resolved on Polymarket
3. ProposeSettlement → starts 12-minute challenge window
4. Wait for challenge_deadline to pass
5. FinalizeSettlement → basket becomes Settled, users can claim
Step 1: Check Basket Status
vara-wallet call $BASKET_MARKET BasketMarket/GetBasket \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok.status'
Must be "Active".
Step 2: Check Polymarket Resolution
For each item in the basket, check if the market has resolved on Polymarket:
curl -s "https://gamma-api.polymarket.com/markets?slug=<poly_slug>" | jq '.[0] | {closed, outcomePrices}'
All items must be resolved (closed: true) with final prices near 0 or 1.
Step 3: Propose Settlement
Build the item_resolutions array — one ItemResolution per basket item:
{
"item_index": 0,
"resolved": "YES",
"poly_slug": "will-btc-hit-100k",
"poly_condition_id": "0xabc123...",
"poly_price_yes": 9900,
"poly_price_no": 100
}
Rules:
- Provide exactly one resolution per basket item
item_indexis 0-based, must be unique, and within basket items rangepoly_slugmust match the basket item's slug exactlypoly_price_yes+poly_price_noshould reflect final Polymarket prices in bpsresolvedis the final outcome:"YES"or"NO"poly_condition_idis optional
Example: Propose settlement for a 2-item basket
vara-wallet --account agent call $BASKET_MARKET BasketMarket/ProposeSettlement --voucher $VOUCHER_ID \
--args '[
0,
[
{
"item_index": 0,
"resolved": "YES",
"poly_slug": "will-btc-hit-100k",
"poly_condition_id": null,
"poly_price_yes": 9900,
"poly_price_no": 100
},
{
"item_index": 1,
"resolved": "NO",
"poly_slug": "will-eth-hit-5k",
"poly_condition_id": null,
"poly_price_yes": 200,
"poly_price_no": 9800
}
],
"Resolved via Polymarket API"
]' \
--idl $IDL
After proposal, the basket enters SettlementPending status and the 12-minute challenge window begins.
Step 4: Wait for Challenge Window
# Check challenge deadline
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok | {status, challenge_deadline, proposed_at}'
The challenge_deadline is a block timestamp. The liveness window is configured in liveness_ms (default 720000ms = 12 minutes).
Wait until the current block timestamp exceeds challenge_deadline.
Step 5: Finalize Settlement
vara-wallet --account agent call $BASKET_MARKET BasketMarket/FinalizeSettlement --voucher $VOUCHER_ID \
--args '[<basket_id>]' --idl $IDL
After finalization:
- Basket status becomes
Settled finalized_atis set- Users can now claim payouts via
../basket-claim/SKILL.md
Verify
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok | {status, payout_per_share, finalized_at}'
Common Errors
| Error | Cause | Fix |
|---|---|---|
Unauthorized |
Not the settler role | Check config for settler_role address |
BasketNotActive |
Basket already in settlement | Check status |
SettlementAlreadyExists |
Already proposed | Wait and finalize |
InvalidResolutionCount |
Wrong number of resolutions | Provide one per item |
ResolutionSlugMismatch |
Slug doesn't match basket item | Use exact slug from basket |
DuplicateResolutionIndex |
Same item_index twice | Make indices unique |
ResolutionIndexOutOfBounds |
Index >= items count | Use 0 to items.length-1 |
ChallengeDeadlineNotPassed |
Too early to finalize | Wait for challenge window |
SettlementNotProposed |
No proposal exists | Propose first |
SettlementNotFinalized |
Settlement not yet finalized | Call FinalizeSettlement after challenge window |