术语表 /隐私与安全
粉尘
- 粉尘是什么?
- 粉尘是指金额过小的比特币输出,花费它所需的交易手续费高于其自身价值,因此它在钱包中形同搁浅,在经济上无法动用。
这条界线随手续费市场变动,而不是固定在某个数字上。花费一笔原生 SegWit 输出约需68虚拟字节,因此一笔5,000聪的输出在10 sat/vB 时完全可以花费,在80 sat/vB 时则一文不值。普通钱包中的粉尘大多不是攻击,而是无人刻意安排的找零剩余。
运作方式
一笔输出是否算作粉尘,是一道可以心算的除法题。
取该输出的价值,除以花费它所需输入的大小,就得到盈亏平衡时的费率。对于原生 SegWit 输出,这个大小约为68虚拟字节。一笔546聪的输出在费率高于约8 sat/vB 时便失去价值。一笔5,000聪的输出可维持到约73 sat/vB。一笔10,000聪的输出可在约147 sat/vB 以内保值,除最严重的手续费飙升外都能覆盖。较旧的传统输入体积是前者的两倍多,因此同样金额放在以1开头的地址上,费率不到一半时就已不划算。
不会损失任何东西,也不会出现任何故障。粉尘输出永远有效,一旦手续费回落,便可再次花费,这正是无须为此恐慌的现实原因。另一种收回的办法,是把它并入您本来就要发出的交易:它会为成本增加68虚拟字节,但并不需要单独承担一整笔交易的费用。
钱包会悄悄处理这种尴尬。当一笔付款的找零将低于中继门槛时,Bitcoin Core 和大多数其他钱包会舍去找零输出,并把这部分金额作为额外手续费交给矿工,因为创建一笔没人花得起的输出对谁都没有好处。
在哪里会遇到它
粉尘源于完全正常的操作,因此几乎每个长期使用的钱包里都有一些。
找零是最大的来源:从一笔0.01 BTC 的输出中支付0.00987 BTC,剩下的就是一点零头。交易所提币时,舍入规则或提币手续费削减金额,也会留下零碎余额。闪电网络通道关闭时,可能退回金额很小的链上余额。空投式广告,即带有信息或链接的微小付款,会在未经请求的情况下到账。铭文和代币实验会留下被保持在网络可中继的最低金额的输出。
合理的做法有三步。小额输出出现时就给它加标签,以便日后知道它的来历。不要为移动它而支付溢价,放着不动即可。然后在手续费确实低廉的时段,把您能说明来历的那些与其他输出一起归并,以几百聪的边际成本收回其价值。对于您无法说明来历的输出,应无限期冻结,因为放着不动的成本为零,而花费它的代价可能是您的隐私。
粉尘 vs 粉尘攻击
粉尘描述的是一笔输出的状态;粉尘攻击描述的是其背后的意图。钱包中绝大多数小额输出是自己产生的找零和舍入剩余,根本没有人在关注。粉尘攻击则是陌生人故意向您发送一点零头,希望您的钱包把它与他们原本无法与您关联的资金一起花掉。由于两种情况的正确应对方式相同,即冻结并加标签,因此在实际操作中,这一区分不如那道算术题重要。