关于 basket-claim
basket-claim 是通过 vara-wallet 领取已结算 PolyBaskets 篮子款项的命令行技能,指导用户检查结算和持仓状态、领取 VARA 或 BET 款项并验证领取结果。
主要功能
- 01检查结算是否已完成
- 02核实持仓与领取状态
- 03领取 VARA 通道款项
- 04领取 BET 代币款项
- 05预览款项并验证领取结果
适用场景
- 01领取已完成结算的 VARA 篮子款项
- 02领取已结算的 BET 通道持仓款项
- 03提交领取前检查持仓
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ adityaakr/ polybaskets --skill basket-claim安装后在 Claude Code 中输入/basket-claim确认已加载。
详细介绍
Basket Claim
通过 vara-wallet 领取已结算 PolyBaskets 篮子的赔付。
设置
仅限主网。 请先运行 vara-wallet config set network mainnet。切勿切换到测试网——那里没有合约。
vara-wallet config set network mainnet
BASKET_MARKET="0xea8373e8b4441ef6e95325c1044d23ebf615b43fdef60a48623836a15ca7a25a"
BET_LANE="0x35848dea0ab64f283497deaff93b12fe4d17649624b2cd5149f253ef372b29dc"
FREEBET_LEDGER="0x6b4ad81d13194f8e27f71f4046c6e489b2af2b0b1ce835f390899941034fd979"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"
BET_LANE_IDL="$_PB/idl/bet_lane_client.idl"
FREEBET_LEDGER_IDL="$_PB/idl/freebet-ledger.idl"
领取前检查工作流
1. 确认结算已完成
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL
检查结果:
status: "Finalized"— 可以领取status: "Proposed"— 挑战期尚未结束,或尚未有人完成结算。在challenge_deadline之后,任何人都可以调用FinalizeSettlement;在此之前,请等待。- 错误
SettlementNotFound— 尚未结算
# Parse settlement status
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL | jq '.result.ok.status'
请先获取你的十六进制地址(SS58 不能用于 actor_id 参数):
MY_ADDR=$(vara-wallet balance | jq -r .address)
2. 确认持仓存在且尚未领取
# VARA lane
vara-wallet call $BASKET_MARKET BasketMarket/GetPositions \
--args '["'$MY_ADDR'"]' --idl $IDL | jq '.result[] | select(.basket_id == <basket_id>)'
# native VARA freebet lane
vara-wallet call $BASKET_MARKET BasketMarket/GetFreebetPositions \
--args '["'$MY_ADDR'"]' --idl $IDL | jq '.result[] | select(.basket_id == <basket_id>)'
# BET lane
vara-wallet call $BET_LANE BetLane/GetPosition \
--args '["'$MY_ADDR'", <basket_id>]' --idl $BET_LANE_IDL
检查 claimed: false。
领取(VARA 通道)
对于 asset_kind: "Vara" 的篮子:
vara-wallet --account agent call $BASKET_MARKET BasketMarket/Claim --voucher $VOUCHER_ID \
--args '[<basket_id>]' --idl $IDL
返回 u128 — 以最小 VARA 单位计的赔付金额(除以 10^12 即为 VARA)。
对于原生 VARA freebet 持仓,请使用相同的 BasketMarket/Claim 方法。合约会将 freebet 本金返还至 FreebetLedger,并仅将超过原始下注金额的利润发送至用户钱包。
示例
# Claim from basket 0
PAYOUT=$(vara-wallet --account agent call $BASKET_MARKET BasketMarket/Claim --voucher $VOUCHER_ID \
--args '[0]' --idl $IDL)
echo "Payout: $PAYOUT"
领取(BET 代币通道)
对于 asset_kind: "Bet" 的篮子:
vara-wallet --account agent call $BET_LANE BetLane/Claim --voucher $VOUCHER_ID \
--args '[<basket_id>]' --idl $BET_LANE_IDL
返回 u256 — 以 BET 代币单位计的赔付金额。
示例
# Claim from basket 1 via BET lane
vara-wallet --account agent call $BET_LANE BetLane/Claim --voucher $VOUCHER_ID \
--args '[1]' --idl $BET_LANE_IDL
赔付计算
payout = shares * (settlement_index / entry_index)
payout_per_share 会在提案期间预先计算并存储在 Settlement 结构体中。你可以在领取前预览预期赔付金额:
# Get settlement payout_per_share
SETTLEMENT=$(vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[<basket_id>]' --idl $IDL)
echo $SETTLEMENT | jq '.result.ok.payout_per_share'
详细公式和示例请参阅 ../references/index-math.md。
领取后验证
# Check position is now claimed
vara-wallet call $BASKET_MARKET BasketMarket/GetPositions \
--args '["'$MY_ADDR'"]' --idl $IDL | jq '.result[] | select(.basket_id == <basket_id>) | .claimed'
# Check native freebet position is now claimed, when applicable
vara-wallet call $BASKET_MARKET BasketMarket/GetFreebetPositions \
--args '["'$MY_ADDR'"]' --idl $IDL | jq '.result[] | select(.basket_id == <basket_id>) | .claimed'
# Check freebet principal was returned to ledger, when applicable
vara-wallet call $FREEBET_LEDGER FreebetLedger/BalanceOf \
--args '["'$MY_ADDR'"]' --idl $FREEBET_LEDGER_IDL
# Check VARA balance increased
vara-wallet balance
常见错误
| 错误 | 原因 | 解决方法 |
|---|---|---|
SettlementNotFinalized | 结算尚未完成 | 等待结算完成 |
AlreadyClaimed | 已领取此篮子的赔付 | 无需操作 |
NothingToClaim | 在此篮子中没有持仓 | 确认持仓存在 |
SettlementNotFound | 尚未提出结算 | 等待结算方提出结算 |
TransferFailed | VARA 转账失败 | 检查合约余额,然后重试 |
评论
支持 Markdown