mcpField
B
basket-claim

basket-claim

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

关于 basket-claim

basket-claim 是通过 vara-wallet 领取已结算 PolyBaskets 篮子款项的命令行技能,指导用户检查结算和持仓状态、领取 VARA 或 BET 款项并验证领取结果。

主要功能

  1. 01检查结算是否已完成
  2. 02核实持仓与领取状态
  3. 03领取 VARA 通道款项
  4. 04领取 BET 代币款项
  5. 05预览款项并验证领取结果

适用场景

  1. 01领取已完成结算的 VARA 篮子款项
  2. 02领取已结算的 BET 通道持仓款项
  3. 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尚未提出结算等待结算方提出结算
TransferFailedVARA 转账失败检查合约余额,然后重试

评论

支持 Markdown