# Sablier Flow 有欠款却不能全提：核对覆盖、暂停与void

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

按同一读取时点检查流率、欠款与余额的不同单位，拆出暂停、退款、永久终止和实际已收款。

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

## 前置条件
- 已有去敏Flow合约/streamId/版本、token decimals、读取块/时间，以及deposit、withdraw、pause/restart/refund/void的原记录。
- 不运行合同/API/Graph查询，不充值、调整、提取、暂停或void；缺资金/权限证据保留未知。

## 1. 确认Flow身份、版本和当前双方

原界面Payments对应Flow，部署页当前v3.0/FL4与旧FL3/FL2/FL不同。按chainId+合约+streamId定位，核getSender/getRecipient和NFT转让记录。

sender可以不同于创建调用者；recipient是当前NFT owner。单有create事件或余额页面不足以证明流已充值或本人有调速/退款权限。

核对结果：Flow版本、sender、当前recipient及读取时点明确。
依据：[Sablier：Vesting、Payments与Airdrops范围](https://docs.sablier.com/apps/features/overview)
依据：[Flow：v3.0与历史部署地址](https://docs.sablier.com/guides/flow/deployments)
依据：[SablierFlow：单位、暂停、退款、void](https://docs.sablier.com/reference/flow/contracts/contract.SablierFlow)
依据：[固定Flow包版本与许可字段](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/package.json)

## 2. 把18位流率与资产整数金额分开

对照getRatePerSecond、getSnapshotDebtScaled、getSnapshotTime和getTokenDecimals。UD21x18流率以1e18表示1个token/秒，snapshotDebtScaled/ongoingDebtScaled为18位固定点。

totalDebtOf/coveredDebtOf/uncoveredDebtOf/getBalance等资产金额按该token decimals，不能把原整数直接相加；future start时ongoing债务可为0。变速/暂停后用各段snapshot，不把最新率回推全历史。

核对结果：速率/缩放欠款/资产金额各有单位和时间基线。
依据：[固定Flow本地状态getter](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/abstracts/SablierFlowState.sol)
依据：[SablierFlow：单位、暂停、退款、void](https://docs.sablier.com/reference/flow/contracts/contract.SablierFlow)
依据：[固定Flow3.0.1欠款与提现实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/SablierFlow.sol)

## 3. 用覆盖欠款而非总欠款判断可提

已有totalDebtOf分为coveredDebtOf与uncoveredDebtOf，withdrawableAmountOf是covered的别名，固定实现covered取余额与总欠款中较小值。

欠款大于余额时未覆盖部分并非可立即提取资金；getBalance也可能含尚未欠给recipient的可退款部分。读取失败不能填0，更不能靠追加充值试错。

核对结果：总欠款、已覆盖可提、未覆盖及余额按同一时点分列。
依据：[Flow：覆盖欠款与未覆盖欠款](https://docs.sablier.com/concepts/flow/overview)
依据：[SablierFlow：单位、暂停、退款、void](https://docs.sablier.com/reference/flow/contracts/contract.SablierFlow)
依据：[固定Flow3.0.1欠款与提现实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/SablierFlow.sol)

## 4. 区分pause、restart与void的后果

已有PauseFlowStream表示sender暂停并更新snapshot、将rate归零；之前累计欠款并不因此被抹掉。Restart需要paused、未void、sender和正流率；这不是Lockup的永久cancel。

void可由sender/recipient或其批准方按具体实现触发，不能restart；资不抵债时uncovered会write off。原VoidFlowStream中的writtenOffDebt与可提余额分开，不能把void当全部欠款支付。

核对结果：暂停、重启、不可恢复终止和被放弃欠款各自可追溯。
依据：[Flow：覆盖欠款与未覆盖欠款](https://docs.sablier.com/concepts/flow/overview)
依据：[Flow：sender、recipient、operator权限](https://docs.sablier.com/reference/flow/access-control)
依据：[固定Flow3.0.1欠款与提现实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/SablierFlow.sol)
依据：[固定Flow方法、事件与单位](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/interfaces/ISablierFlow.sol)

## 5. 按sender退款与recipient提现分别定位失败

refund仅sender且amount不超过refundableAmountOf，退款去sender，不是recipient到账。withdraw可由公众向当前recipient发起；recipient/approved方才可选择其它to，额度和非零地址另核。

当前实现有minFee/msg.value条件，费用/补贴与Gas分列；InsufficientFeePayment、超可提/可退、空流、void限制等原错分别留存，不将权限错误当资金被盗或欠款不存在。

核对结果：操作人、to、金额来源、费用和原失败层没有混合。
依据：[Flow：sender、recipient、operator权限](https://docs.sablier.com/reference/flow/access-control)
依据：[SablierFlow：单位、暂停、退款、void](https://docs.sablier.com/reference/flow/contracts/contract.SablierFlow)
依据：[固定Flow3.0.1欠款与提现实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/SablierFlow.sol)
依据：[Sablier：界面费、Gas与补贴版本](https://docs.sablier.com/concepts/fees)

## 6. 核withdraw回执而不是累计欠款页面

从已有WithdrawFromFlowStream对应ID、to、amount及实际token转账/成功回执核收款；Deposit只是往流里充值，Refund是sender取回未占用余额，Void是终止与债务处理。

最后按读取时点、流率分段、覆盖/未覆盖、已提现、sender退款、write-off列出；本页没有统一累计paid getter，不用totalDebt减余额猜全历史已付。缺完整日志只给有限结论。

核对结果：实际已收金额有转账证据，剩余义务与write-off另列。
依据：[SablierFlow：单位、暂停、退款、void](https://docs.sablier.com/reference/flow/contracts/contract.SablierFlow)
依据：[固定Flow方法、事件与单位](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/interfaces/ISablierFlow.sol)
依据：[固定Flow3.0.1欠款与提现实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/SablierFlow.sol)

## 常见错误
- Flow创建/总欠款当足额到账或全部可提。
- 把18位rps/Scaled debt与token decimals原金额相加。
- pause当永久取消，void当支付全部欠款，refund当recipient收款。

## 完成检查
- 能够按同一时点区分覆盖/未覆盖欠款、余额、暂停与终止，并定位已有提现结果。
- 未承诺欠款能恢复、sender会充值或未来可全额提取。

## 相关知识
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)
- [链上指标历史数值为什么会变？](https://lianxiaozhi.com/learn/point-in-time-metrics)
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)

## 官方依据
- [Sablier：Vesting、Payments与Airdrops范围](https://docs.sablier.com/apps/features/overview)
- [Flow：v3.0与历史部署地址](https://docs.sablier.com/guides/flow/deployments)
- [固定Flow包版本与许可字段](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/package.json)
- [SablierFlow：单位、暂停、退款、void](https://docs.sablier.com/reference/flow/contracts/contract.SablierFlow)
- [固定Flow本地状态getter](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/abstracts/SablierFlowState.sol)
- [固定Flow3.0.1欠款与提现实现](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/SablierFlow.sol)
- [Flow：覆盖欠款与未覆盖欠款](https://docs.sablier.com/concepts/flow/overview)
- [Flow：sender、recipient、operator权限](https://docs.sablier.com/reference/flow/access-control)
- [固定Flow方法、事件与单位](https://raw.githubusercontent.com/sablier-labs/evm-monorepo/18fce3d1cad30f1e641fe9eff3a913ee5cdd54ae/flow/src/interfaces/ISablierFlow.sol)
- [Sablier：界面费、Gas与补贴版本](https://docs.sablier.com/concepts/fees)
