比特币的聪和 vB 是什么?手续费单位与计价换算详解 图 1
比特币的聪和 vB 是什么?手续费单位与计价换算详解 · 图 1

先记住三个单位

比特币世界里同时流通三套单位。第一套是计价单位:1 个比特币等于一亿聪(satoshi),聪是最小的可记账单位,链上任何一笔输出的金额都能用整数聪精确表示,不存在“半分比特币”这种记账误差。第二套是体积单位:虚拟字节(vB,virtual byte),衡量交易占用区块空间的大小。第三套是报价单位:聪每虚拟字节(sat/vB),表示“每买一个虚拟字节的空间愿意付多少聪”。钱包界面上那个“低/中/高”费率选项,背后就是一个 sat/vB 数字。

为什么小数位很重要

因为手续费低到一定程度会撞上下限。一笔交易的输出金额如果换算后不足 546 聪(对常见输出类型而言的尘值标准),会被节点视为“粉尘”而拒绝在默认策略下转发。理解这一点就会明白:费率报价的每一个 sat/vB 小数位,乘以几千个字节的交易体积,都会变成真实的聪支出。关于尘值与 UTXO 整理的细节,可以读 listunspent怎样筛安全UTXO? 里对输出的讨论。

虚拟字节不是原始字节

区块的容量限制不是按交易的原始字节数算的,而是按加权字节算:非见证数据权重为 4,见证数据权重为 1,两者相加除以 4 得到 vsize,这就是 BIP141 隔离见证引入的记账规则。直观效果是:见证签名部分“打个折”计入区块体积。所以同一笔转账,用带见证的SegWit地址通常比传统地址体积更小、费用更低。这也是费率单位选择 vB 而不是字节的原因——它和 consensus 层的块空间账本严格对应。

从费率到账单:一次完整换算

假设(示例非实时)钱包给出的推荐费率是 20 sat/vB,构造出的交易 vsize 是 200 vB,那么手续费就是 20 乘 200 等于 4000 聪,即 0.00004 BTC。再假设币价波动不影响这个换算——聪和 BTC 之间的兑换率是固定的 1 比一亿。常见错误是把“sat/B”(每原始字节)当成“sat/vB”:SegWit 交易的 vsize 明显小于原始字节数,用 sat/B 报价会系统性高估你的实际费率。查看钱包给出的交易大小时,优先看 vsize 字段;区块浏览器上两个数字往往同时列出,含义完全不同。

费率估算和你看到的价格

钱包的推荐费率来自对内存池历史的统计观察,不是预言,详见 比特币手续费为什么时高时低?钱包推荐费率的估算逻辑。同理,区块浏览器上“平均每笔手续费多少聪”的统计,是聪与 vB 混合计价时代的平均值,把它和自己的账单对比时记得先统一单位。想了解当前内存池里费率档位怎么排布,可以看 比特币内存池与费率怎么看?;确认数与到账体验的关系在 比特币确认数是什么?到账要等多久

小结与风险提示

聪是钱的单位,vB 是空间的单位,sat/vB 是把两者连起来的单价。日常转账里最省心的习惯,是在发送前把钱包显示的费率、交易大小和预计费用三个数字做一次乘法互验:费率乘大小应当约等于费用,单位不一致时先统一再比较。同样的道理也适用于跨钱包比价:不要问“别家钱包是不是更便宜”,要问“两边报价的单位口径是否一致、估算窗口是否相同”。聪与比特币的换算是十进制的整数关系,任何工具报出无法用整数聪表示的输出金额,都应视为展示层四舍五入而非链上事实。做任何手续费对比前先问一句:两边单位一样吗?本文所有数字均为示例,用于说明换算方法,不代表任何时刻的真实费率或价格。比特币转账费用随网络拥堵变化,转账前请在钱包内核对最终金额与手续费;本文不构成投资建议。