mcpField
B
basket-query

basket-query

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

关于 basket-query

basket-query 是用于只读查询 Vara Network 上 PolyBaskets 合约及相关程序的技能,提供检查篮子、持仓、结算、配置、代币状态和免费投注记录的命令示例。

主要功能

  1. 01查询篮子数量、详情和持仓
  2. 02查看结算状态及付款字段
  3. 03读取 BasketMarket 和 BetLane 配置
  4. 04检查 BET 余额和领取状态
  5. 05查询 VARA 免费投注余额和授权记录

适用场景

  1. 01浏览篮子并查看其中项目
  2. 02检查账户持仓和领取情况
  3. 03跟踪结算进度及付款详情
  4. 04核实代币、投注通道或免费投注合约状态

安装

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

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

安装后在 Claude Code 中输入/basket-query确认已加载。

详细介绍

篮子查询

所有查询均为只读且免费——无需使用 --account。

设置

仅限主网。 在执行任何操作前运行 vara-wallet config set network mainnet。切勿切换到测试网——那里没有合约。

# Set network and variables (see ../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 解析:

# ⚠ Use .result.ok — NOT .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 是否连接到预期的账本:

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

获取 Agent 自身地址:

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 通道中的持仓
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 份额(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

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

按 ID 检查授予记录
vara-wallet call $FREEBET_LEDGER FreebetLedger/GetGrant \
  --args '["<grant_id>"]' --idl $FREEBET_LEDGER_IDL
检查已授权的投注程序
vara-wallet call $FREEBET_LEDGER FreebetLedger/IsBetProgramAuthorized \
  --args '["'$BASKET_MARKET'"]' --idl $FREEBET_LEDGER_IDL

如果返回 false,Agent 不得尝试调用 SpendFreebet。

评论

支持 Markdown