跳到正文
← 使用教程

Reap虚拟余额扣了两次:核SETTLEMENT、债务和幂等回放

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

按已有Program-Funded+Managed记录解释虚拟资产余额与卡可用额度,区分真实资金、入账差额及结算。

开始前准备

  • 准备既有脱敏项目模式、accountId、虚拟资产定义、posting请求/回执、卡债与余额快照;不要提供密钥或完整卡资料。
  • 按公开文档核已有材料,不创建项目/虚拟资产、不更改价格或发送posting,也不触发资金转移。

1. 固定资金模型和授权模式

此任务限定Program-Funded+Managed:客户侧保管底层资产,Reap持有master collateral;虚拟posting本身不转真实币。User-Funded用户钱包和Program-Funded+External实时授权不能套本任务的Virtual Assets余额。

资金模型及authorization mode均在项目设置时确定,文档称上线后不能更改。先从原材料确定,不能仅凭产品名、API能读或BTC标签判断。

检查结果:项目明确是Program-Funded+Managed,虚拟与真实资产所在层分开。

2. 按虚拟资产单位及价格快照核金额

定义的symbol、decimals和rateSource不可更改;amount是该虚拟资产的十进制差额,不是新总额,也不是billing currency金额或原始链上整数。按virtualAssetId、精度和账户定位,避免将100份写成100USD。

FIXED价显式更新,HTTP价每5分钟成功抓取一次;卡授权用最近快照,服务短暂失败不会自动归零。核原SETTLEMENT entries的rateSnapshot,不用今天价格回填,DISABLED永久排除现余额但保留历史。

检查结果:资产身份、差额单位、ACTIVE/禁用状态和原价格快照分别留证。

3. 用assets减liabilities解释可用额度

availableBalance=assets−liabilities。卡债含pending授权及cleared未结算;仅看虚拟资产总额会高估可支出。账户RESTRICTED会拒绝授权,即使卡仍ACTIVE,因此余额为正不证明卡现在可用。

SETTLEMENT同时扣虚拟余额并抵卡债;WITHDRAWAL只扣虚拟余额,若实际目的是清偿已消费债务,会把卡可用额度再降一次。以相同时点的账户/债务/原posting记录核,不把客户侧内部调拨也重复记入Reap。

检查结果:资产、pending/cleared卡债、可用额度和posting目的可对上。

4. 逐项核结算金额与负债变化

同一posting多entries原子生效,SETTLEMENT用每项在posting时的价;各entry先按billing currency舍入后再加总。官方例100YUSD×1+0.01WETH×3487.42得到134.87USD,150债务余15.13,这是说明性输入。

结算先减cleared,超出再减pending;若超还或之后退款,cardDebt.total可能为负,是可抵未来消费的账户credit,不直接判字段错误或立即可链上提取。posting是用户侧账目,不替代master collateral的卡网络真实结算回执。

检查结果:原rateSnapshot/settledAmount与cleared/pending/total变动有同币种口径。

5. 可提款额度按每资产独立检查

WITHDRAWAL只防该虚拟资产余额负数,不防availableBalance变负;核已有assets回执的withdrawable,已扣pending卡债。每行withdrawable是假定只动该资产的上限,不能把多行上限直接加起来当总提款预算。

文档要求真实链入金已finalized才映射DEPOSIT、客户侧资金释放前先成功WITHDRAWAL,消费可观察后SETTLEMENT。这里只对既有时序留证;缺成功/最终确认记录不补记,也不追加资金测试。

检查结果:每资产上限与总额度不相加,真实变动和posting的已有先后能说明。

6. 核同一操作的幂等和24小时边界

POST /postings必须Idempotency-Key,缺失422;同一逻辑操作的重试复用原键和body。同键同body可回放并带Idempotent-Replayed:true,同键不同body为400,正在处理的并发同键为409;24小时后同键会当新操作。

一般响应缓存含4xx/5xx,但401、422、429明确不缓存;业务错误和网络未收回执分开。已有重试超过24小时、换键或输入改变时先对照原posting身份及账本,不根据一次超时认定没入账。本文不重试或发送新请求。

检查结果:原幂等键/请求体摘要/时间/回放标记与账本事件能关联。

怎样确认完成

  • 留下对象、输入、原回执、计算口径和未验证项;没有资料不补假值,也不操作账户或资金。

常见错误与边界

  • 媒体POS实时价格描述不代替HTTP五分钟快照方法;Virtual Asset账目不等实际BTC入金。

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