Files
PolyHermes/docs/neg-risk-redeem.md
T
WrBugandCursor 13662dd0d5 fix(redeem): Neg Risk 市场使用 WrappedCollateral 赎回,并补充文档
- RelayClientService: 增加 negRiskWrappedCollateralAddress,createRedeemTx 支持 isNegRisk 选用抵押品
- BlockchainService: redeemPositions/redeemPositionsBatch 支持 isNegRisk,批量请求改为 (conditionId, indexSets, isNegRisk)
- AccountService: 赎回前按市场查询 getNegRiskByConditionId,批量与单笔均传入 isNegRisk
- docs/neg-risk-redeem.md: 新增 Neg Risk 赎回逻辑与对应 JS/TS 代码说明

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 00:11:40 +08:00

2.8 KiB
Raw Blame History

Neg Risk 赎回与对应 JS/TS 代码说明

Neg Risk 特殊逻辑

1. 赎回(Redeem

  • 普通市场:仓位由 USDC 抵押,调用 CTF 的 redeemPositions(collateralToken, parentCollectionId, conditionId, indexSets) 时,collateralToken 为 USDC 地址(Polygon: 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)。
  • Neg Risk 市场:仓位由 WrappedCollateral 抵押(neg-risk-ctf-adapter 设计),同一笔赎回必须使用 WrappedCollateral 地址(Polygon: 0x3A3BD7bb9528E159577F7C2e685CC81A765002E2),否则链上找不到对应仓位,会得到 payout 0。

本项目中:通过 Gamma API 的 negRisk / negRiskOther 判断市场类型,赎回时对 Neg Risk 市场传 isNegRisk=true,在 createRedeemTx 中选用 WrappedCollateral 作为 collateralToken

2. 下单/签约(Order Signing

  • 普通市场:使用标准 CTF Exchange 合约签约。
  • Neg Risk 市场:必须使用 Neg Risk CTF Exchange 合约签约,否则 CLOB 返回 invalid signature。

OrderSigningService.getExchangeContract(negRisk)CopyOrderTrackingService 中按 getNegRiskByConditionId 选择 exchange。


对应的 JS/TS 代码位置

功能 仓库/来源 路径或说明
Relayer 执行、Safe 交易提交 Polymarket/builder-relayer-client src/client.tsexecute)、src/encode/safe.tsMultiSend createSafeMultisendTransaction
链与合约配置 builder-relayer-client src/config/index.tsPolygon/Amoy 的 SafeMultisend 等)
赎回 calldata 构建 官方仓库无 官方库只负责执行传入的 Transaction[],不包含 createRedeemTx 或 redeem 工具函数
社区赎回示例(单一 collateral) Gist: redeem-positions 使用 collateralToken 调用 redeemPositions未区分 Neg Risk(全部用同一 collateral,如 USDC
Neg Risk 合约与 WrappedCollateral Polymarket/neg-risk-ctf-adapter README、addresses.json137 链上 negRiskWrappedCollateral 等地址)
市场是否 Neg Risk Gamma API 市场/事件的 negRisknegRiskOther 字段,本项目中通过 MarketService.getNegRiskByConditionId 查询

小结

  • Neg Risk 特殊逻辑:赎回用 WrappedCollateral、下单用 Neg Risk Exchange;均由「是否为 Neg Risk 市场」分支处理。
  • 对应 JS 代码:执行与 MultiSend 在 builder-relayer-client;赎回参数与 calldata 在应用层构建,官方无现成 redeem 工具;Neg Risk 的抵押品与合约见 neg-risk-ctf-adapterGamma API