# Sablier Lockup 收款未到钱包：核对NFT、已解锁与提现回执

整理：链小知（AI 辅助）
资料核对日期：2026-10-12
引用地址：https://lianxiaozhi.com/tools/guides/sablier-lockup-nft-withdrawable-cancel-receipt
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

从已有流记录分清当前recipient、累计解锁、实际已提和取消退款；按版本、模型、目的地址与费用定位失败。

## 使用工具
- [Sablier 流式分配](https://lianxiaozhi.com/tools/sablier) · [官方入口](https://app.sablier.com/)

## 前置条件
- 准备已有去敏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、模型和版本对应同一流。
依据：[Sablier：Vesting、Payments与Airdrops范围](https://docs.sablier.com/apps/features/overview)
依据：[Lockup：v4.0与历史部署地址](https://docs.sablier.com/guides/lockup/deployments)
依据：[固定Lockup包版本与许可字段](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/package.json)

## 2. 用当前NFT接收人核对提取权

已有getRecipient(streamId)对应当前NFT owner；核创建后是否曾转让，转让可一起移交已解锁未提部分，原创建recipient未必仍拥有权利。

NFT图片或百分比可能被市场缓存。已DEPLETED后NFT可burn，getRecipient失败不能直接推原流不存在，应分别保留原NFT和历史流记录。

核对结果：当前recipient和记录时点明确，原接收人、现owner与展示分开。
依据：[Sablier：流NFT与当前recipient](https://docs.sablier.com/concepts/nft)
依据：[固定Lockup4.0.1任务实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/SablierLockup.sol)
依据：[SablierLockup：额度、取消与提现接口](https://docs.sablier.com/reference/lockup/contracts/contract.SablierLockup)

## 3. 把已解锁、已提和可提金额分列

对照同一时点streamedAmountOf、getWithdrawnAmount、withdrawableAmountOf及token decimals。固定实现可提为已streamed减已withdrawn；累计解锁不是本次钱包净入账。

SETTLED表示额度已streamed但仍可能待提，CANCELED也可留recipient余额，DEPLETED含提取及退款。模型不同不能都按时间直线估；PriceGated固定实现要求一次提完整可提，其它模型才允许不超额度的部分提取。

核对结果：三种金额按同资产/时刻/单位核对，状态未被当到账。
依据：[Lockup：SETTLED、CANCELED与DEPLETED](https://docs.sablier.com/concepts/lockup/statuses)
依据：[固定Lockup状态与资产读取](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/abstracts/SablierLockupState.sol)
依据：[SablierLockup：额度、取消与提现接口](https://docs.sablier.com/reference/lockup/contracts/contract.SablierLockup)
依据：[固定Lockup4.0.1任务实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/SablierLockup.sol)

## 4. 检查取消给sender退了哪一部分

核已有getSender、isCancelable、wasCanceled及CancelLockupStream。取消只适用于warm且cancelable、由sender触发；recipient或NFT买家身份不能替代该权限。

取消把未streamed部分退sender，已经streamed减已提部分留当前recipient；不能重启已取消流。renounce取消权也是不可逆的独立动作，不是暂停或提取。

核对结果：sender退款与recipient剩余额度分开，失败取消没有标成功。
依据：[SablierLockup：额度、取消与提现接口](https://docs.sablier.com/reference/lockup/contracts/contract.SablierLockup)
依据：[固定Lockup4.0.1任务实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/SablierLockup.sol)
依据：[固定Lockup状态与资产读取](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/abstracts/SablierLockupState.sol)

## 5. 按目的地址、金额与费用排查提现失败

已有withdraw(streamId,to,amount)需非零to、有效金额和非DEPLETED。非recipient/approved caller只能向当前recipient提现；approved权限与普通付款资产allowance不同。PriceGated金额分支按模型确认。

当前固定实现检查Comptroller的minFee与msg.value，和Gas不同；费用页的Interface术语不证明绕界面免这项，也不要机械双计。同一版本记录中保存费用/补贴及原错误。批量withdrawMultiple可能整体成功而个别流失败，应逐ID核InvalidWithdrawalInWithdrawMultiple事件。

核对结果：失败定位到权限、模型、金额、费或批量子项，未给无证报价。
依据：[SablierLockup：额度、取消与提现接口](https://docs.sablier.com/reference/lockup/contracts/contract.SablierLockup)
依据：[固定Lockup4.0.1任务实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/SablierLockup.sol)
依据：[Sablier：界面费、Gas与补贴版本](https://docs.sablier.com/concepts/fees)

## 6. 用成功回执与实际资产转账作完成检查

逐笔核WithdrawFromLockupStream的ID/to/amount及对应资产转账、回执状态、当时recipient；NFT Transfer是权利变化，不是底层币收款。批量原交易成功不替代每项成功。

把创建、解锁、取消退款、提取和外部到账按时间排列；旧owner过去已提金额不算当前owner的新收款。缺转账或回执时只确认已有额度/请求，不补到账结论。

核对结果：收款结论绑定同链、同资产、实际目的地址和成功结果。
依据：[SablierLockup：额度、取消与提现接口](https://docs.sablier.com/reference/lockup/contracts/contract.SablierLockup)
依据：[固定Lockup4.0.1任务实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/SablierLockup.sol)
依据：[Sablier：流NFT与当前recipient](https://docs.sablier.com/concepts/nft)

## 常见错误
- 把SETTLED/CANCELED或NFT图片当实际到账。
- 把可取消推广全部流，或用NFT新owner身份取消原sender流。
- 统一按线性进度/部分提现估所有模型，或把批量交易成功当每ID成功。

## 完成检查
- 形成当前权利人—累计解锁—已提—可提—sender退款—实际目的地址的证据链。
- 所有结论只限已有记录，未查询当前额度或执行任何资金操作。

## 相关知识
- [NFT 的 Token URI、图片和链上所有权怎样对应？](https://lianxiaozhi.com/learn/erc721-tokenuri-metadata)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)
- [链上指标历史数值为什么会变？](https://lianxiaozhi.com/learn/point-in-time-metrics)

## 官方依据
- [Sablier：Vesting、Payments与Airdrops范围](https://docs.sablier.com/apps/features/overview)
- [Lockup：v4.0与历史部署地址](https://docs.sablier.com/guides/lockup/deployments)
- [固定Lockup包版本与许可字段](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/package.json)
- [Sablier：流NFT与当前recipient](https://docs.sablier.com/concepts/nft)
- [固定Lockup4.0.1任务实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/SablierLockup.sol)
- [SablierLockup：额度、取消与提现接口](https://docs.sablier.com/reference/lockup/contracts/contract.SablierLockup)
- [Lockup：SETTLED、CANCELED与DEPLETED](https://docs.sablier.com/concepts/lockup/statuses)
- [固定Lockup状态与资产读取](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/lockup/src/abstracts/SablierLockupState.sol)
- [Sablier：界面费、Gas与补贴版本](https://docs.sablier.com/concepts/fees)
