交易费是所有交易输入的 UTXO
包含聪的总量减去所有交易输出中包含聪的总量, 在发送交易时不需要手动设置。
对于下列的交易:
010000000001018f3a82f54be94ee1ec10e775e680e40c2228ddd63ea22bf83b5cfa0dcc0172480100000000ffffffff02a393000000000000160014f84bba960ea0c7ca0aee57986e1a745049882cf984f01700000000001976a914b18992bb69dbbe09514fae5101b268a6ade3467b88ac02483045022100a2f5f3ad6c365b2e0e70f432d73e886808151b25dfee8f36104050e5fc896dc402207e3570e85deffeb3900537b26600db337dd881f8ab32980e3f6ed28f9e1f80d201210322684e787f36c958cf856e00797d84075c58068f88e4f5fa6db5498dd6b9dbae00000000
交易输入聪的总量为 , 交易输出聪的总量为 , 所以交易费为
然而矿工从内存池中选择交易, 并非根据交易费的大小, 而是根据交易费率。
交易费率
交易费率是一种衡量单位交易大小费用的方法。交易费率等于交易费除以交易的大小。
交易费率有几种衡量指标:
sat/byte
sat/wu
sat/vbyte
sat/byte
已废弃。隔离见证升级前的区块大小限制为 1 MB, 交易费率以交易占据的实际字节数衡量。
例如交易费是 1000 sat, 交易大小是 250 字节, 那么交易费率是 4 sat/byte。
sat/wu
隔离见证升级后, 区块大小限制为 4000000
权重单位(weight units
, 简称 wu
), 交易费率以交易占据的权重衡量。
交易的权重是交易的非见证数据大小乘以 4 加上见证数据大小。
见证数据大小为 Witness
、Marker
和 Flag
字段的大小。其余为非见证数据的大小。
例如有如下交易:
010000000001018f3a82f54be94ee1ec10e775e680e40c2228ddd63ea22bf83b5cfa0dcc0172480100000000ffffffff02a393000000000000160014f84bba960ea0c7ca0aee57986e1a745049882cf984f01700000000001976a914b18992bb69dbbe09514fae5101b268a6ade3467b88ac02483045022100a2f5f3ad6c365b2e0e70f432d73e886808151b25dfee8f36104050e5fc896dc402207e3570e85deffeb3900537b26600db337dd881f8ab32980e3f6ed28f9e1f80d201210322684e787f36c958cf856e00797d84075c58068f88e4f5fa6db5498dd6b9dbae00000000
见证数据大小为 110 字节, 非见证数据大小为 116 字节。
总权重等于
另一种计算方法是将非见证数据大小乘以 3 加上总交易数据大小。
当交易费是 72790 sat, 交易费率为
sat/vbyte
vbyte
称作虚拟字节。目的是为了降低 Witness
在交易数据中的权重, 从而降低交易费用。
交易的虚拟字节大小等于其总权重除以 4。或者将见证数据大小乘以 0.25, 即将见证数据的每个字节当成 0.25 个字节, 再加上非见证数据大小, 其结果与总权重除以 4 相同。
上面示例中虚拟字节大小等于
或者
当交易费是 72790 sat, 交易费率为