术语表 /交易与手续费
虚拟字节
又称 vbyte、vB。
- 虚拟字节是什么?
- 虚拟字节是钱包为交易定价所用的单位,等于交易权重的四分之一(向上取整),因此每一笔手续费报价都以每 vbyte 多少聪表示。
规定于 BIP-141。
钱包本可以用权重单位报价手续费,从此不再提及字节,但虚拟字节保留了原有的算术:不含见证数据的交易,其 vsize 恰好等于以字节计的大小。一个区块可容纳1,000,000个虚拟字节。读懂以 sat/vB 表示的报价,就能分辨合理的提币手续费和虚高的手续费。
运作方式
虚拟大小只需一行算术:取权重,除以四,向上取整。
这个数字与原始序列化大小之间的差距,正是资金流失之处。一笔把一枚原生 segwit 币花入两个输出的支付,在网络上为222字节,权重为561个权重单位,按141个虚拟字节计价。若用您选定的费率乘以222而不是141,就会多付约57%。区块浏览器会并排列出这两个数字,分别标为 size 和 vsize,而选错其中一个,是手续费估算中最常见的算术错误。
取整只在最后进行一次。各个部分并非整数:一个 Taproot 密钥路径输入为57.5 vbyte,所以中间合计可能出现半个单位。因此,两个钱包构建完全相同的支出时,可能相差一个 vbyte,而两者都没有错。Bitcoin Core 为同一笔交易提供三种视图,即 size、vsize 和 weight,您可以自行核对其中任何一个。
手续费估算器使用的是同一单位的变体。estimatesmartfee 以每千虚拟字节多少比特币作答,因此返回的费率0.00005000表示5,000聪可购买1,000个虚拟字节,即5 sat/vB。内存池仪表板的每一档位、钱包的每一个滑块,以及每一条关于中继下限的拒绝消息,都以同一单位计量。
在哪里会遇到它
虚拟字节决定了交易所提币的实际成本,在接受固定手续费之前,值得先算一算。
以一家批量处理提币的平台为例:一个输入在一笔交易中为100位客户的提币提供资金。每个原生 segwit 输出按31 vbyte 计,加上输入的68和约11的固定开销,整笔交易约为3,179 vbyte。按5 sat/vB 计算,费用为15,895聪,即这一百人中每人约159聪。若收取0.0001 BTC 的固定费用,则每人为这部分空间被收取10,000聪,超过其应摊份额的六十倍。在拥堵时,情况会反转:按100 sat/vB 计算,同一批交易每人的费用为3,179聪,固定手续费就变成了补贴。固定提币手续费是一场赌局,在网络清闲的日子里,赢的是平台。
同一单位也为您自己的整理操作定价。把零散的小额 UTXO 合并扫入一处,费用几乎完全取决于输入数量,因此把十二个原生 segwit 输入合并为一个输出,无论金额多少,都约为858 vbyte。按2 sat/vB 操作,费用不到2,000聪。若在手续费飙升期间操作,同样的工作要花五十倍于此的费用。
虚拟字节 vs 权重单位
虚拟字节和权重单位衡量的是同一份数据,只是刻度相差四倍,两者只有在取整时才不能互换。共识限制以权重书写,因此区块上限表示为4,000,000个单位。界面以 vbyte 书写,因为8 sat/vB 比每权重单位2聪更容易记住。向上取整函数使561个权重单位的交易按141 vbyte 计费,而不是140.25,因此您要为从未使用的四分之三字节付费。阅读规范时用的是权重,支付任何费用时用的是 vbyte。