Turnkey Earn 全退后累计存款归零:核包装合约、收益与退出回执
链小知 · 进阶 · 核验 · 依官方文档整理
按wallet+wrapper核原单位余额、MAX重置和提现状态,区分网页活动成功与真实资产返回。
开始前准备
- 准备已有脱敏list_earn_positions、原退出活动与状态记录;不存款、部署wrapper、退出或调用API。
- 保留钱包/组织、caip2、wrapperAddress与底层资产单位,所有数字来自已有响应或官方示例。
1. 定位钱包与具体wrapper
list_earn_positions按单钱包地址、parent/sub-organization取其wrapper持仓,并非组织总资产。Earn存款进入fee wrapper,由它持有底层vault仓位,不能把wrapper地址当用户钱包或底层vault。
费用变更需新wrapper;旧持仓仍属旧wrapper,不能只按vault名合并两个不同费率窗口。
检查结果:钱包、组织、chain和wrapper有固定身份,旧新持仓不误合并。
2. 用原单位复核净收益
currentValue是底层资产raw整数,已扣wrapper费用;totalDeposited/totalWithdrawn为同一持仓窗口累计金额。display.*是格式化字符串,不做算术。
文档公式为currentValue−totalDeposited+totalWithdrawn。官方USDC示例100000000存入、0提取、100512340当前值,在6 decimals下净收益0.51234 USDC;只是示例,不是本轮实时收益。
检查结果:同资产/同窗口使用原整数单位,净收益未再减wrapper费。
3. 区分累计重置与存款消失
amountValue=MAX全退出确认后会关闭该仓位并把totalDeposited/totalWithdrawn从零重新计;因此退出前后累计值不能直接当同一生命周期对账。
保留MAX前的原快照、withdrawRequestId和对应hash,再核是否已完成;活动COMPLETED本身只表示入队,不能凭累计变化认定资产已回钱包。
检查结果:生命周期分段,有退出前快照和退出状态,归零未当数据丢失或本金亏损。
4. 区分暂停存款、提现状态与Gas
depositsDisabled或暂停wrapper只限制新存款,文档写不阻止撤出;这不保证底层流动性、账户权限或链状态均满足。已有提现参数是底层资产raw金额或MAX,不是vault份额数量。
get_earn_withdraw_status的COMPLETED表示已纳入链,附withdrawTxHash;FAILED附error。sponsor=true通过Gas Station承担网络费,false由签名钱包支付原生Gas;本页只核已有回执,未证明实际余额已返回或最终确认。
检查结果:参数单位、存款开关、活动状态、链上状态和付款方分别记录。
5. 把APY、实际收益与本金风险分开
Earn费用按gross yield计,客户费与Turnkey费分别是其比例;grossApy×(1−totalFeeBps/10000)是文档净APY,不是实际到账金额。currentValue已净费,不重复扣。
收益来自第三方协议且可变,底层智能合约/流动性风险仍可导致本金损失。费用‘不从本金收’不是本金无损保证;未取得实际费率/账户订单时不替用户填固定收益。
检查结果:预期APY、实得收益、费用基数与本金风险明确,未知费率保留未知。
怎样确认完成
- 形成wallet/wrapper/单位/收益生命周期及退出回执检查表。
- 未发起存款、退出、部署、费用修改或真实余额验收。
常见错误与边界
- MAX后的统计从新生命周期开始,不代表历史累计永远可从活跃position接口恢复。
- 旧wrapper可撤出是平台方法范围声明,不替代底层vault流动性、签名/权限和链回执核对。