Superfluid 流显示正常但余额不符:核对流率、buffer与取消
链小知 · 进阶 · 核验 · 依官方文档整理
从已有CFA记录区分单流、账户净流和动态可用余额,排查读取时点、清算及撤销operator后仍在运行的流。
开始前准备
- 已有去敏chainId、Host/CFA/Forwarder/SuperToken、sender/receiver、读取块/时间、流变更及operator/取消回执。
- 只整理已有记录;不登录App、运行SDK/demo、读取RPC/Graph、授权、签名或发送删除请求。
1. 确认CFA及同链SuperToken
用原记录的token/sender/receiver定位CFA单流;官方当前接口为CFAv1Forwarder。链/协议版本与地址需对应原部署,固定metadata只例示配置,不代表任意token或所有App支持。GDA/IDA分配、pool claim或NFT流记录不能套CFA元组。
检查结果:同链、同token和CFA双方已确定,未把不同协议的claim当本流余额。
2. 读单流率和原更新时间,核对单位
原getFlowInfo(token,sender,receiver)输出lastUpdated、flowrate、deposit、owedDeposit;flowrate按wad/秒,18位。lastUpdated是最后流更新时刻,另保留这次读取块/时间。
月显示值不能当raw flowrate,也不把最新流率乘整个创建以来时长。概览的月/秒示例不作为精确换算依据;采用原整数和实际秒数,变速/删除/重建分段核对。
检查结果:原流率、原更新时间、读取时间与单位分别清楚。
3. 区分账户净流与可用余额
getAccountFlowInfo/getAccountFlowrate针对账户聚合入流减出流,可为负,不等于这条收款流。realtimeBalanceOf(account,timestamp)给signed availableBalance和deposit/owedDeposit,Now方法还返回对应timestamp。
固定SuperToken.balanceOf动态反映可用余额,却把负available截成0;0不说明没有流、已安全停流或不欠款。deposit是buffer、owedDeposit与SuperApp借用储备有关,不作为累计已收或平台手续费。
检查结果:单流、净流、signed可用额与储备按相同资产/时点分列。
4. 核已有累计索引与实际余额的范围
若原索引有streamedUntilUpdatedAt/currentFlowRate/updatedAtTimestamp,只在同一流率区间与索引时点估后续增量,变速需对应变更记录。单流累计是流的历史量,不是账户当前可用余额。
不能只加ERC20 Transfer事件:流余额变化不每秒发Transfer。普通转入转出、包装/解包和其它agreements也影响余额;已读余额指南的示例没有包含IDA并用旧Mumbai/parseInt,不能当完整当前查询或安全大整数计算代码。
检查结果:索引累计、估计增量和账户余额各有范围,缺区间不补全历史。
5. 分别核撤销operator与实际停止流
已有revokePermissions只撤销operator控制,固定Forwarder明确不undo/reset此前创建或变更的流。需另对照对应deleteFlow回执和后续同tuple流率;只退出网站或撤销ERC20allowance不证明流停止。
按本篇CFAv1Forwarder入口区分:caller是sender或receiver时分派CFA.deleteFlow,其他caller分派deleteFlowByOperator;后者先检查DELETE权限,缺权限报CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS,不会因critical状态跳过这层。
permissionless critical或jailed SuperApp例外属于经Host调用CFA.deleteFlow的另一入口;在其内部_deleteFlow中,无权限且双方App未jailed、availableBalance非负时可报CFA_NON_CRITICAL_SENDER。两入口及错误分别记录,不能把该例外套给无权限Forwarder调用。清算判断用signed available<0,不凭UI截0判断。buffer可随治理、token/链/流率变化,不保证清算后全退。
检查结果:权限撤销、删除成功、后续流率与清算/储备结果分别有记录。
6. 用同一时点的余额与变更记录交付结论
对原创建/变速/删除回执逐项核token、sender、receiver、成功状态及后续读取;Flow存在或方法返回bool不是底层资产已到账。收到的是该SuperToken余额,底层币或原生币收款需另有解包回执。
getFlowInfo没有累计paid/可claim字段;缺完整历史时只交当前原记录与误差层。形成单流率、净流率、可用额、buffer、取消/权限和资产身份清单,不承诺自动停流或当前余额已独立查证。
检查结果:最终结论只限已有SuperToken记录,底层资产和历史累计待核可见。
怎样确认完成
- 能够区分同链token单流/净流/可用余额、buffer、operator权限与已有停止结果。
- 没有运行当前查询或确认真实用户余额、底层到账和全部历史收入。
常见错误与边界
- lastUpdated当读取时间、单流累计当账户余额。
- balanceOf=0当停流或无清算风险,buffer/owedDeposit当平台手续费。
- 撤销operator/断开钱包/底层allowance当删除已存在流;套旧Mumbai或示例数字为当前支持/准确换算。