跳到正文
← 使用教程

Drips 已显示 stream 却收不到:核 account ID、额外精度与可接收周期

链小知 · 进阶 · 核验 · 依官方文档整理

用既有配置和结果区分发送者stream余额、已结束周期、当前周期与splittable,定位身份、单位或历史覆盖不足。

开始前准备

  • 准备本人/获授权的脱敏既有记录:链、Drips/driver地址、driverId、sender/receiver accountId、ERC20/decimals、StreamConfig、配置时间/余额及receive结果。没有结果时仅整理配置,不报告当前收款。
  • 方法按固定V2代码07c3924及官方文档解释,未使用SDK、RPC、真实账户或签名;无需提供秘密或完整个人交易资料。

1. 先把钱包地址和 Drips account ID 分开

记录链和Drips实例,再找既有账户的driver类型/driverId。Drips账户是32字节ID;AddressDriver、NFTDriver、repository等各自认证和管理账户,不能只把钱包0x地址当所有模型完整ID。

固定AddressDriver计算(driverId<<224)|uint160(address),中间64位为0;保存为完整hex或整数字符串,避免普通浮点Number精度丢失。文档ID0是例子,不从另一链或另一个实例照抄;原driverAddress=0成功返回代表未注册,读取失败则仍未知。

检查结果:链/实例、driver类型/ID与32字节accountId相符或差异明确。

2. 核每秒rate与余额两套精度

原StreamConfig中amtPerSec以token最小单位再加9位;例如已确认6位USDC,0.05 USDC/秒对应50000最小单位/秒,再编码为50000000000000。显示rate为rawRate÷10^9÷10^tokenDecimals。

balance、receivable等金额不多加9位,仍按token decimals显示。额外精度只在rate,不把wallet余额乘10^9。极小rate还需匹配部署minAmtPerSec(最小1个token unit/周期,不是1整币);文档Ether例子的0.003/0.03文字矛盾不作为算例。

检查结果:rate、资产金额和最小token unit单位分别标明,无9位重复换算。

3. 核开始、持续时间和配置余额口径

从已有已解码配置取receiver accountId、start/duration和最后成功配置时间:未来start未到不会开始,duration相对设置的start;未设start时按配置时间。sender可改未来接收列表,不能改已经stream出的过去资金。

streamsState返回streamsHash/streamsHistoryHash、updateTime、balance、maxEnd;balance是上次配置时余额,不是现在wallet或当前可提余额。每ERC20的stream状态独立,不能用另一token的资金/哈希解释此stream;没有当前列表或历史时不能只按余额×秒数补造收款。

检查结果:实际生效配置/时间/资产范围清楚,配置余额未当现时钱包余额。

4. 区分已结束周期接收和当前周期 squeeze

保存既有部署cycleSecs及同一时点区块timestamp。固定cycle按timestamp/cycleSecs+1划分;receiveStreams只处理已经结束周期。不要把App月度结算日、一天或一周默认当协议所有部署cycle长度。

当前cycle需squeezeStreams路径,按token和sender分别提供完整配置history;它是改变状态且更费Gas,不是免费刷新或只读查看。没有历史/结果时可标“当前周期尚未接收”,不能通过重复receive或随意删历史宣称已收到。

检查结果:结束周期、当前周期和应用结算安排分开,未知cycle参数不硬套默认。

5. 检查 maxCycles 覆盖与 receive 阶段结果

已有receivableStreamsCycles(accountId,erc20)为可处理周期数;receiveStreamsResult(accountId,erc20,maxCycles)只是view估计。maxCycles小可能未覆盖全部历史,大可能Gas过高;0估计还可能因当前周期、已接收或输入不匹配,不单独证明无人stream。

只有已有成功receiveStreams记录才把receivedAmt列为进入splittable;它尚未进wallet,split/collect仍是后续阶段。将估计、成功receivedAmt、剩余历史和splittable快照分列,并保留读取时点,避免把前后不同配置结果拼成精确余额。

检查结果:估计与已执行receive区分,覆盖不足和无当前周期金额未写资金消失。

6. 按原执行记录排查暂停或配置过期

如果stream由Safe管理,旧暂停/修改proposal本身不生效;以执行确认时间为准,计划start与实际确认较晚者限制开始。源配置在proposal之后变动,涉及相同ERC20的旧currReceivers可能过期,不能仅用提案时间算流量。

汇总ID、token、rate、配置/周期、view结果、receive执行和下一阶段状态。协议FAQ无用户费用仍有Gas,赞助仅明确条件;失败/null不写zero或已退款。没有原回执时保持未确认,不创建stream、squeeze或新配置来验证。

检查结果:原因定位至身份/单位/周期/配置/执行或明确未知,未自动推wallet到账。

怎样确认完成

  • 账户身份、rate/金额单位、配置时间与周期覆盖可复核,view与已执行receive分列。
  • 仅静态官方方法核验;未读取实时状态、接收/squeeze、钱包或资金。

常见错误与边界

  • 额外9位只在amtPerSec;保存大整数,accountId不能用浮点Number。
  • receive结果进splittable,钱包没转账不证明资金丢失;Safe proposal不等执行。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据