Sablier Lockup 收款未到钱包:核对NFT、已解锁与提现回执
链小知 · 进阶 · 核验 · 依官方文档整理
从已有流记录分清当前recipient、累计解锁、实际已提和取消退款;按版本、模型、目的地址与费用定位失败。
开始前准备
- 准备已有去敏streamId、链/合约/版本、token/decimals、创建/转让/读取及提现或取消回执和取得时间。
- 只整理已有材料;不连接钱包、执行RPC/索引查询、签名、提取或取消。记录缺项保留未知。
1. 先确定是Lockup及其部署版本
从原界面Vesting或创建回执定位Lockup,保留chainId、合约地址、streamId和lockupModel。只凭数字ID不能跨合约定位;Payments的Flow不能套Lockup参数。
对照部署页v4.0/LK3与历史LK2/LK/LL/LD/LT,记录实际ABI。固定源码package4.0.1是本页参考,不自动升级旧地址。
检查结果:产品、网络、地址、ID、模型和版本对应同一流。
2. 用当前NFT接收人核对提取权
已有getRecipient(streamId)对应当前NFT owner;核创建后是否曾转让,转让可一起移交已解锁未提部分,原创建recipient未必仍拥有权利。
NFT图片或百分比可能被市场缓存。已DEPLETED后NFT可burn,getRecipient失败不能直接推原流不存在,应分别保留原NFT和历史流记录。
检查结果:当前recipient和记录时点明确,原接收人、现owner与展示分开。
3. 把已解锁、已提和可提金额分列
对照同一时点streamedAmountOf、getWithdrawnAmount、withdrawableAmountOf及token decimals。固定实现可提为已streamed减已withdrawn;累计解锁不是本次钱包净入账。
SETTLED表示额度已streamed但仍可能待提,CANCELED也可留recipient余额,DEPLETED含提取及退款。模型不同不能都按时间直线估;PriceGated固定实现要求一次提完整可提,其它模型才允许不超额度的部分提取。
检查结果:三种金额按同资产/时刻/单位核对,状态未被当到账。
4. 检查取消给sender退了哪一部分
核已有getSender、isCancelable、wasCanceled及CancelLockupStream。取消只适用于warm且cancelable、由sender触发;recipient或NFT买家身份不能替代该权限。
取消把未streamed部分退sender,已经streamed减已提部分留当前recipient;不能重启已取消流。renounce取消权也是不可逆的独立动作,不是暂停或提取。
检查结果:sender退款与recipient剩余额度分开,失败取消没有标成功。
5. 按目的地址、金额与费用排查提现失败
已有withdraw(streamId,to,amount)需非零to、有效金额和非DEPLETED。非recipient/approved caller只能向当前recipient提现;approved权限与普通付款资产allowance不同。PriceGated金额分支按模型确认。
当前固定实现检查Comptroller的minFee与msg.value,和Gas不同;费用页的Interface术语不证明绕界面免这项,也不要机械双计。同一版本记录中保存费用/补贴及原错误。批量withdrawMultiple可能整体成功而个别流失败,应逐ID核InvalidWithdrawalInWithdrawMultiple事件。
检查结果:失败定位到权限、模型、金额、费或批量子项,未给无证报价。
6. 用成功回执与实际资产转账作完成检查
逐笔核WithdrawFromLockupStream的ID/to/amount及对应资产转账、回执状态、当时recipient;NFT Transfer是权利变化,不是底层币收款。批量原交易成功不替代每项成功。
把创建、解锁、取消退款、提取和外部到账按时间排列;旧owner过去已提金额不算当前owner的新收款。缺转账或回执时只确认已有额度/请求,不补到账结论。
检查结果:收款结论绑定同链、同资产、实际目的地址和成功结果。
怎样确认完成
- 形成当前权利人—累计解锁—已提—可提—sender退款—实际目的地址的证据链。
- 所有结论只限已有记录,未查询当前额度或执行任何资金操作。
常见错误与边界
- 把SETTLED/CANCELED或NFT图片当实际到账。
- 把可取消推广全部流,或用NFT新owner身份取消原sender流。
- 统一按线性进度/部分提现估所有模型,或把批量交易成功当每ID成功。