比特币转账额:分开找零与付款
比特币一笔大额交易,可能只支付很少的款项,同时返回大量找零。把所有新输出相加,得到的是输出金额,不一定是不同经济所有者之间的实际付款额。研究网络使用情况时,必须先把这两个数字调节清楚,再解释转账额上升。
比特币交易开发指南介绍了输入花费旧输出、交易创建新输出的结构。这解释了测量问题的来源。下面的找零分类是研究者的判断框架;协议不会替每个输出附上统一的“付款”或“找零”标签。
先核对守恒,再解释用途
对于普通交易,取得每个输入所引用的旧输出金额,逐项列出新输出,用输入合计减输出合计计算手续费。Coinbase区块奖励交易应另行处理。调节时保留聪为整数单位,展示时再转换为BTC,避免小数舍入制造差额。
随后把输出分为有证据的外部付款、有证据的内部找零、尚未确定三类。在获得授权的钱包记录中,可能直接确认找零归属;公开地址模式通常只能支持较弱的推断。首次出现的地址既可能接收付款,也可能接收找零,还可能只是托管机构内部的新地址。
不要规定最大输出一定是找零,也不要因为地址格式相同就认定归属相同。批量支付、协作交易、钱包迁移都可能击穿简单规则。调整后的估计必须保留原始输出总额,让复查者知道哪些金额被排除了。
假设案例:大输入、小付款
假设虚构钱包花费一个10 BTC旧输出,创建0.4 BTC收款输出和9.599 BTC找零,手续费为0.001 BTC。旧输出必须整体被消耗,但钱包要支付给别人的金额远小于10 BTC。
| 项目 | 假设BTC金额 | 含义 |
|---|---|---|
| 输入 | 10 | 被消耗的旧输出 |
| 外部付款 | 0.4 | 需归属证据支持 |
| 找零 | 9.599 | 需钱包证据支持 |
| 手续费 | 0.001 | 输入减输出 |
输出总额是9.999 BTC;在已验证归属的假设下,付款额是0.4 BTC。两者约相差25倍。这只是一个说明偏差可能很大的例子,不能推导任何真实数据商都高估25倍。
如果拿掉钱包记录,两个输出都无法确定归属,应该保留金额和未知状态。数据商的启发式判断可以提供找零候选,但不能被写成已观察到的受益所有权变化。可以报告严格验证的小计,再单列未分类金额,而不是强行给出精确经济转账额。
转账额突然增加时查什么
同时比较交易笔数、输入数、输出数和每笔金额,检查主要贡献是否来自归集或批量付款。归集可能把许多旧输出合成一个新输出,没有发生消费;批量付款可能在一笔交易中包含许多真实付款。两种结构都不能直接换算为客户人数。
保存分类规则及版本,在少量原始交易上改变合理的找零假设,观察调整总额有多大变化。协作交易无法适用单一发送方模型时,应保留独立类别。地址聚类也需要时间和来源记录,后续标签修订不能悄悄改写过去的研究结论。
最终交付应包含金额调节、所有权假设和未解决余额。仅凭金额无法证明出售、付款目的或独立自然人。钱包证据改变、聚类方法更新、某种新交易结构使分类成功率下降时,都应触发复查。
验证分类规则时,可以选一组拥有独立归属证据的样本,分别报告误认找零与漏认找零;两种错误对付款额的影响方向相反。若样本全是简单双输出交易,就无法检验对大额归集的识别能力,而这些归集恰好可能主导金额。
常见问题
花费10 BTC输入,就表示给别人付了10 BTC吗?
不是。旧输出整体被消耗,新输出中可能有大部分仍由原控制者拥有。付款额需要进一步的归属证据。
可以把疑似找零直接从原始数据删除吗?
应保留原始账,再提供调整视图,列出不确定归类及其金额影响,方便别人重算。