比特币交易费用并不是平台或者系统收取的固定服务费,本质是交易输入总金额减去输出总金额产生的差额,由打包该笔交易的矿工获取,整个过程没有专门的手续费填写字段,是UTXO交易模型下自然生成的结果。很多新手会误以为转账金额越大手续费越高,实际比特币交易费用和转账数额无关,核心取决于这笔交易占用多少区块空间,由用户通过费率进行市场竞价,以此换取矿工优先打包确认的机会。

要理解交易费用的产生,需要看懂比特币UTXO的底层运行逻辑,比特币没有传统账户余额概念,钱包显示的余额,是多个未花费交易输出的总和。用户发起转账时,钱包会挑选一个或多个旧的UTXO作为交易输入,这些输入的全部金额都会被消耗掉,之后构建两类输出,一类是转给接收方的比特币,另一类是返还给自己的找零输出。当输入的全部价值扣除转给他人和自身找零的输出之后,剩下没有被分配的那部分余额,就自动变成交易费用,这笔差额不会返还给转账人,会归成功挖出区块的矿工所有。如果手动构造交易时忘记添加找零输出,多余的全部余额都会直接作为交易费给到矿工,这也是实操中需要避开的风险点。
交易费用的多少,由虚拟字节和聪每虚拟字节的费率共同决定,一笔交易的输入数量越多、输出越多,交易的数据体积就越大,占用的虚拟字节也就越高。同样转0.1枚比特币,如果消耗5个小额UTXO作为输入,和只消耗1个大额UTXO相比,前者数据体积更大,即便使用相同费率,最终产生的交易费用也会高出不少。不同地址格式也会影响字节占用,原生隔离见证以及默克尔抽象脚本地址,相比传统旧地址能压缩签名数据,同等交易场景下可以降低三成到接近一半的虚拟字节,直接减少交易费用的支出。

交易费用的市场价格由内存池的供需关系动态决定,用户签名完成的交易广播到全网节点之后,会进入内存池等待被打包。比特币每个区块的虚拟字节容量存在上限,每十分钟左右产出一个新区块,矿工为了最大化自身收益,会优先挑选内存池中费率更高的交易放进区块。网络拥堵的时候,大量交易堆积在内存池,用户为了加快确认速度,会主动抬高单位费率,整体交易费用就会水涨船高;网络空闲时段,只需要很低的费率就可以完成确认,极端情况下也可以设置零费率,但这类交易被打包的概率极低,很可能长时间卡在待确认状态。

交易费用同时承担着网络防护与长期安全激励的双重作用,设置交易成本可以阻止攻击者大批量发送垃圾交易挤占区块资源,提升网络攻击的成本。随着比特币减半周期不断推进,区块挖矿奖励会持续缩减,未来交易费用会逐步成为矿工主要的收入来源,支撑整个pow网络的安全运维。普通用户在实操当中,不需要手动计算输入输出的差额,主流钱包会读取内存池的实时状态,自动给出不同确认速度对应的费率建议,自动生成找零输出,以此生成合理的交易费用,只有高级自定义交易场景,才需要用户自行把控各项参数。
