SuperAPI AI 工具集

basket-query

智能体与模型

查看项目

更新于 10-15 10:35

技能介绍

用途

basket-query 用于让智能体从链上合约读取篮子(basket)相关状态。所有查询都是只读且免费的,不需要 --account。

前置设置

仅支持主网(MAINNET ONLY)。在做任何操作之前,先运行 vara-wallet config set network mainnet。绝不能切换到测试网——测试网上没有合约。

设置网络与变量(参见 ../references/program-ids.md):

vara-wallet config set network mainnet
BASKET_MARKET="0xea8373e8b4441ef6e95325c1044d23ebf615b43fdef60a48623836a15ca7a25a"
BET_TOKEN="0x186f6cda18fea13d9fc5969eec5a379220d6726f64c1d5f4b346e89271f917bc"
BET_LANE="0x35848dea0ab64f283497deaff93b12fe4d17649624b2cd5149f253ef372b29dc"
FREEBET_LEDGER="0x6b4ad81d13194f8e27f71f4046c6e489b2af2b0b1ce835f390899941034fd979"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"
BET_TOKEN_IDL="$_PB/idl/bet_token_client.idl"
BET_LANE_IDL="$_PB/idl/bet_lane_client.idl"
FREEBET_LEDGER_IDL="$_PB/idl/freebet-ledger.idl"

获取十六进制地址

Sails actor_id 参数要求十六进制格式——SS58 地址不可用:

MY_ADDR=$(vara-wallet balance | jq -r .address)
echo $MY_ADDR  # 0xe008...

BasketMarket 查询

获取篮子数量

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

返回 u64——已创建的篮子总数。篮子 ID 从 0 开始索引。

获取某个篮子

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

响应嵌套在 .result.ok 下。用 jq 解析:

# ⚠ 使用 .result.ok —— 不是 .ok!
vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args '[0]' --idl $IDL | jq '.result.ok'

篮子字段:id、creator、name、description、items(BasketItem 数组)、created_at、status(Active/SettlementPending/Settled)、asset_kind(Vara/Bet)。

获取用户持仓

vara-wallet call $BASKET_MARKET BasketMarket/GetPositions \
  --args '["'$MY_ADDR'"]' --idl $IDL

返回 vec Position。每个持仓包含:basket_id、user、shares、claimed、index_at_creation_bps。

获取原生 freebet 持仓

vara-wallet call $BASKET_MARKET BasketMarket/GetFreebetPositions \
  --args '["'$MY_ADDR'"]' --idl $IDL

返回由 FreebetLedger/SpendFreebet 记录的原生 VARA freebet 持仓。每个持仓与原生 VARA 持仓结构相同:basket_id、user、shares、claimed、index_at_creation_bps。

检查 BasketMarket 是否连接到预期的 ledger:

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

获取智能体自身地址:

AGENT_ADDR=$(vara-wallet wallet list | jq -r '.[0].address')

获取结算信息

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

返回 Result<Settlement, BasketMarketError>。关键字段:status(Proposed/Finalized)、payout_per_share、challenge_deadline、finalized_at、item_resolutions。

检查配置

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

返回 BasketMarketConfig:admin_role、settler_role、liveness_ms、vara_enabled、min_items_per_basket。

检查 VARA 是否启用

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

返回 bool。

BetToken 查询

检查 BET 余额

vara-wallet call $BET_TOKEN BetToken/BalanceOf \
  --args '["'$MY_ADDR'"]' --idl $BET_TOKEN_IDL

检查领取预览

vara-wallet call $BET_TOKEN BetToken/GetClaimPreview \
  --args '["'$MY_ADDR'"]' --idl $BET_TOKEN_IDL

返回 ClaimPreview:amount、streak_days、next_claim_at、can_claim_now。

检查领取状态

vara-wallet call $BET_TOKEN BetToken/GetClaimState \
  --args '["'$MY_ADDR'"]' --idl $BET_TOKEN_IDL

检查代币信息

vara-wallet call $BET_TOKEN Metadata/Name --args '[]' --idl $BET_TOKEN_IDL
vara-wallet call $BET_TOKEN Metadata/Symbol --args '[]' --idl $BET_TOKEN_IDL
vara-wallet call $BET_TOKEN Metadata/Decimals --args '[]' --idl $BET_TOKEN_IDL
vara-wallet call $BET_TOKEN BetToken/TotalSupply --args '[]' --idl $BET_TOKEN_IDL

注意:Name、Symbol、Decimals 位于 Metadata 服务上,而不是 BetToken。

BetLane 查询

获取 BET lane 中的持仓

vara-wallet call $BET_LANE BetLane/GetPosition \
  --args '["0x<user_actor_id>", 0]' --idl $BET_LANE_IDL

返回 Position:shares(u256)、claimed、index_at_creation_bps。注意:BetLane 持仓使用 u256 shares(BET 代币),不同于 BasketMarket 持仓使用 u128(VARA)。

获取分页持仓

vara-wallet call $BET_LANE BetLane/GetPositions \
  --args '["0x<user_actor_id>", 0, 10]' --idl $BET_LANE_IDL

参数:user、offset、limit。返回 Result<vec UserPositionView, BetLaneError>。

检查 BetLane 配置

vara-wallet call $BET_LANE BetLane/GetConfig --args '[]' --idl $BET_LANE_IDL

返回 BetLaneConfig:min_bet、max_bet、payouts_allowed_while_paused。

检查暂停状态

vara-wallet call $BET_LANE BetLane/IsPaused --args '[]' --idl $BET_LANE_IDL

FreebetLedger 查询

检查原生 VARA freebet 余额

vara-wallet call $FREEBET_LEDGER FreebetLedger/BalanceOf \
  --args '["'$MY_ADDR'"]' --idl $FREEBET_LEDGER_IDL

返回 u128 原始 VARA 单位。1 VARA = 1000000000000。

按 id 检查授权

vara-wallet call $FREEBET_LEDGER FreebetLedger/GetGrant \
  --args '["<grant_id>"]' --idl $FREEBET_LEDGER_IDL

检查已授权的 bet 程序

vara-wallet call $FREEBET_LEDGER FreebetLedger/IsBetProgramAuthorized \
  --args '["'$BASKET_MARKET'"]' --idl $FREEBET_LEDGER_IDL

如果返回 false,智能体不得尝试 SpendFreebet。

适用场景

适用于智能体需要读取链上篮子状态、用户持仓、结算状态、配置或篮子数量等只读信息的场景。

限制

仅支持主网,测试网上没有合约;所有查询均为只读且免费,不涉及写入操作。