mcpField
B
basket-create

basket-create

github.com/adityaakrその他224 回インストール
リポジトリ

basket-create について

basket-create は、`vara-wallet` を使って PolyBaskets に予測バスケットを作成するスキルです。Polymarket の市場検索、設定値の検証、トランザクション送信の手順を案内します。

主な機能

  1. 01`vara-wallet` による予測バスケット作成
  2. 02Polymarket 市場の検索と絞り込み
  3. 03項目数とウェイト合計の検証
  4. 04`Vara` または `Bet` の選択
  5. 05作成結果の取得と確認

活用シーン

  1. 01Polymarket 市場を組み合わせた予測バスケット作成
  2. 02バスケット項目への比率ウェイト設定
  3. 03作成前のネットワークと資産設定の確認

インストール

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

$npx skills add https://github.com/adityaakr/polybaskets --skill basket-create

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

詳細

Basket Create

vara-wallet を使って PolyBaskets に新しい予測バスケットを作成します。

セットアップ

メインネットのみです。 何よりも先に vara-wallet config set network mainnet を実行してください。テストネットにはコントラクトがないため、絶対に切り替えないでください。

vara-wallet config set network mainnet
BASKET_MARKET="0xea8373e8b4441ef6e95325c1044d23ebf615b43fdef60a48623836a15ca7a25a"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"

ウォレットとガス代用の VARA があることを確認してください。

vara-wallet wallet list
vara-wallet balance

Polymarket のマーケットを探す

バスケットの項目として使用する、Polymarket のアクティブなマーケットを検索します。最も活発なマーケットを取得するには order=volume24hr&ascending=false を使い、終了間近のマーケットを見つけるには end_date_max を追加してください。

# Fetch high-volume markets ending within 48 hours (fastest resolution)
# end_date_min=now filters out markets that already ended (closed=false does NOT filter these!)
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&end_date_max=$(date -u -v+48H +%Y-%m-%dT%H:%M:%SZ)&limit=20"
# On Linux use: date -u -d '+48 hours' +%Y-%m-%dT%H:%M:%SZ

# Or fetch all active markets sorted by volume (still filter out ended ones!)
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=20"

警告:closed=false は、マーケットがまだ終了していないことを意味しません。 endDate を過ぎたマーケットも表示されます。マーケットを選ぶ前に、必ず現在の時刻を end_date_min に設定するか、endDate > now を確認してください。

jq で解析します。

# Show market id, question, YES/NO prices, and hours remaining
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=20" \
  | jq '[.[] | {id, question, yes: (.outcomePrices | fromjson | .[0]), no: (.outcomePrices | fromjson | .[1]), endDate, liquidity}]'

重要:outcomePrices は JSON でエンコードされた文字列であり、配列ではありません。 API が返すのは "[\"0.52\", \"0.48\"]"(文字列)であり、["0.52", "0.48"](配列)ではありません。

  • jq:YES の価格には .outcomePrices | fromjson | .[0]
  • Python:json.loads(m['outcomePrices'])[0]
  • Node.js:JSON.parse(m.outcomePrices)[0]
  • 誤り: m['outcomePrices'][0] は価格ではなく、文字列の最初の文字である [ を返します。

重要: poly_market_id は 数値の Polymarket ID(例:"540816")であり、16 進数の conditionId ではありません。API レスポンスの id フィールドを使用してください。

slug フィールドは、すべてのマーケットレスポンスにすでに含まれています。 slug を調べるためにマーケットを再取得しないでください。id を取得したのと同じレスポンスの slug を使用してください。特定のマーケット ID の詳細が必要な場合は、直接取得してください。

curl -s "https://gamma-api.polymarket.com/markets/540816"

事前確認

ほとんどのデプロイ環境は CHIP 専用モードで動作します。VARA の状態を確認してください。

vara-wallet call $BASKET_MARKET BasketMarket/IsVaraEnabled --args '[]' --idl $IDL

false の場合(一般的な状態)、"Bet" バスケット(CHIP レーン)を作成してください。

ユーザーが FreebetLedger を通じてネイティブ VARA のフリーベットを使うことを明示的に希望する場合は、IsVaraEnabled が true であり、アセット種別 "Vara" を指定してバスケットを作成する必要があります。ネイティブのフリーベットは "Bet" バスケットでは使用できません。

検証ルール

トランザクションを送信する前に、ローカルで検証してください。

ルール制約
名前空でないこと。最大 128 文字
説明最大 512 文字
項目GetConfig.min_items_per_basket 以上(現在のコントラクトのデフォルト:2)。上限は 32 項目
ウェイトすべての weight_bps の合計が正確に 10000(=100%)であること。各ウェイトはベーシスポイント単位です。50%=5000、30%=3000 など
重複なし同じ poly_market_id と selected_outcome の組み合わせを 2 回以上含めないこと
poly_market_id最大 128 文字
poly_slug最大 128 文字
asset_kind"Vara" または "Bet"

バスケットを作成する

引数
CreateBasket(name: str, description: str, items: vec BasketItem, asset_kind: BasketAssetKind) -> u64

各 BasketItem:

{
  "poly_market_id": "540816",
  "poly_slug": "will-btc-hit-100k",
  "weight_bps": 5000,
  "selected_outcome": "YES"
}
  • poly_market_id — API の id フィールドにある数値の Polymarket ID(例:"540816")。16 進数の conditionId ではありません
  • weight_bps — ベーシスポイント単位のウェイトです。50%=5000、30%=3000 など。すべてのウェイトの合計は 10000(=100%)である必要があります
例:3 項目のバスケット
vara-wallet --account agent call $BASKET_MARKET BasketMarket/CreateBasket --voucher $VOUCHER_ID \
  --args '[
    "AI Regulation Bundle",
    "Outcomes related to AI policy",
    [
      {
        "poly_market_id": "540816",
        "poly_slug": "ai-regulation-2025",
        "weight_bps": 4000,
        "selected_outcome": "YES"
      },
      {
        "poly_market_id": "540817",
        "poly_slug": "openai-ipo-2025",
        "weight_bps": 3500,
        "selected_outcome": "YES"
      },
      {
        "poly_market_id": "540818",
        "poly_slug": "eu-ai-act-enforcement",
        "weight_bps": 2500,
        "selected_outcome": "NO"
      }
    ],
    "Bet"
  ]' \
  --idl $IDL

ウェイト:40% + 35% + 25% = 100%(4000 + 3500 + 2500 = 10000 bps)。

結果を解析する

呼び出しは u64 のバスケット ID を返します。

RESULT=$(vara-wallet --account agent call $BASKET_MARKET BasketMarket/CreateBasket --voucher $VOUCHER_ID \
  --args '[...]' --idl $IDL)
BASKET_ID=$(echo $RESULT | jq -r '.result // .ok // .')
echo "Created basket: $BASKET_ID"

作成後

  • 確認:vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args "[$BASKET_ID]" --idl $IDL
  • 賭けを行う:../basket-bet/SKILL.md を参照
  • Vara バスケットでネイティブ VARA のフリーベットを使う:../basket-freebet/SKILL.md を参照
  • 他の人が賭けられるよう、バスケット ID を共有する

よくあるエラー

エラー原因修正方法
InvalidWeightsウェイトの合計が100%になっていませんweight_bpsを調整して、合計が10000(=100%)になるようにします
NoItemsitems配列が空です1件以上のアイテムを追加します
NotEnoughItemsmin_items_per_basket のアイテム数を下回っていますアイテムを追加するか、BasketMarket/GetConfigを確認します
TooManyItemsアイテム数が32件を超えていますアイテムを削除します
DuplicateBasketItem同じマーケットと結果の組み合わせが重複しています重複を削除します
VaraDisabledVARAモードがオフです代わりに"Bet"のasset_kindを使用します
NameTooLong名前が128文字を超えています名前を短くします
DescriptionTooLong説明が512文字を超えています説明を短くします

すべてのエラーの種類については、../references/error-codes.mdを参照してください。

コメント