mcpField
B
basket-create

basket-create

github.com/adityaakr其他224 次安装
代码仓库

关于 basket-create

basket-create 是一项通过 `vara-wallet` 在 PolyBaskets 上创建预测篮子的技能,面向配置市场项目、权重和资产类型的操作者。它说明如何查找 Polymarket 市场、验证创建参数并提交交易。

主要功能

  1. 01通过 `vara-wallet` 创建预测篮子
  2. 02查询并筛选 Polymarket 市场
  3. 03校验项目数量与权重总和
  4. 04选择 `Vara` 或 `Bet` 资产类型
  5. 05读取并核对创建结果

适用场景

  1. 01组合多个 Polymarket 市场进行预测
  2. 02按比例为篮子项目分配权重
  3. 03检查网络与资产设置后创建篮子

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/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"

确保你有钱包和用于支付 Gas 的 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:.outcomePrices | fromjson | .[0] 获取 YES 价格
  • Python:json.loads(m['outcomePrices'])[0]
  • Node.js:JSON.parse(m.outcomePrices)[0]
  • 错误写法: m['outcomePrices'][0] 会得到 [(字符串的第一个字符),而不是价格!

重要: poly_market_id 是数字形式的 Polymarket ID(例如 "540816"),不是十六进制 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 不能重复出现
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"),不是十六进制 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 基点)。

解析结果

调用将返回一个 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 个条目
NotEnoughItems条目数少于 min_items_per_basket添加条目,或检查 BasketMarket/GetConfig
TooManyItems条目数超过 32 个移除条目
DuplicateBasketItem同一市场和结果重复出现移除重复项
VaraDisabledVARA 模式已关闭改用 "Bet" asset_kind
NameTooLong名称超过 128 个字符缩短名称
DescriptionTooLong描述超过 512 个字符缩短描述

有关所有错误变体,请参阅 ../references/error-codes.md。

评论

支持 Markdown