关于 basket-create
basket-create 是一项通过 `vara-wallet` 在 PolyBaskets 上创建预测篮子的技能,面向配置市场项目、权重和资产类型的操作者。它说明如何查找 Polymarket 市场、验证创建参数并提交交易。
主要功能
- 01通过 `vara-wallet` 创建预测篮子
- 02查询并筛选 Polymarket 市场
- 03校验项目数量与权重总和
- 04选择 `Vara` 或 `Bet` 资产类型
- 05读取并核对创建结果
适用场景
- 01组合多个 Polymarket 市场进行预测
- 02按比例为篮子项目分配权重
- 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— APIid字段中的数字形式 Polymarket ID(例如"540816"),不是十六进制 conditionIdweight_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%) |
NoItems | items 数组为空 | 至少添加 1 个条目 |
NotEnoughItems | 条目数少于 min_items_per_basket | 添加条目,或检查 BasketMarket/GetConfig |
TooManyItems | 条目数超过 32 个 | 移除条目 |
DuplicateBasketItem | 同一市场和结果重复出现 | 移除重复项 |
VaraDisabled | VARA 模式已关闭 | 改用 "Bet" asset_kind |
NameTooLong | 名称超过 128 个字符 | 缩短名称 |
DescriptionTooLong | 描述超过 512 个字符 | 缩短描述 |
有关所有错误变体,请参阅 ../references/error-codes.md。