GitHub
深入技术
交易费

交易费

交易费是所有交易输入的 UTXO 包含聪的总量减去所有交易输出中包含聪的总量, 在发送交易时不需要手动设置。

对于下列的交易:

010000000001018f3a82f54be94ee1ec10e775e680e40c2228ddd63ea22bf83b5cfa0dcc0172480100000000ffffffff02a393000000000000160014f84bba960ea0c7ca0aee57986e1a745049882cf984f01700000000001976a914b18992bb69dbbe09514fae5101b268a6ade3467b88ac02483045022100a2f5f3ad6c365b2e0e70f432d73e886808151b25dfee8f36104050e5fc896dc402207e3570e85deffeb3900537b26600db337dd881f8ab32980e3f6ed28f9e1f80d201210322684e787f36c958cf856e00797d84075c58068f88e4f5fa6db5498dd6b9dbae00000000

交易输入聪的总量为 16794851679485, 交易输出聪的总量为 37795+1568900=160669537795 + 1568900 = 1606695 , 所以交易费为 16794851606695=727901679485 - 1606695 = 72790

然而矿工从内存池中选择交易, 并非根据交易费的大小, 而是根据交易费率。

交易费率

交易费率是一种衡量单位交易大小费用的方法。交易费率等于交易费除以交易的大小。

交易费率有几种衡量指标:

  • sat/byte
  • sat/wu
  • sat/vbyte

sat/byte

已废弃。隔离见证升级前的区块大小限制为 1 MB, 交易费率以交易占据的实际字节数衡量。

例如交易费是 1000 sat, 交易大小是 250 字节, 那么交易费率是 4 sat/byte。

sat/wu

隔离见证升级后, 区块大小限制为 4000000 权重单位(weight units, 简称 wu), 交易费率以交易占据的权重衡量。

交易的权重是交易的非见证数据大小乘以 4 加上见证数据大小。

见证数据大小为 WitnessMarkerFlag 字段的大小。其余为非见证数据的大小。

例如有如下交易:

010000000001018f3a82f54be94ee1ec10e775e680e40c2228ddd63ea22bf83b5cfa0dcc0172480100000000ffffffff02a393000000000000160014f84bba960ea0c7ca0aee57986e1a745049882cf984f01700000000001976a914b18992bb69dbbe09514fae5101b268a6ade3467b88ac02483045022100a2f5f3ad6c365b2e0e70f432d73e886808151b25dfee8f36104050e5fc896dc402207e3570e85deffeb3900537b26600db337dd881f8ab32980e3f6ed28f9e1f80d201210322684e787f36c958cf856e00797d84075c58068f88e4f5fa6db5498dd6b9dbae00000000

见证数据大小为 110 字节, 非见证数据大小为 116 字节。

总权重等于 116×4+110=574 wu116 \times 4 + 110 = 574 \ \mathtt {wu}

另一种计算方法是将非见证数据大小乘以 3 加上总交易数据大小。

116×3+226=574 wu116 \times 3 + 226 = 574 \ \mathtt {wu}

当交易费是 72790 sat, 交易费率为 72790÷574126.81 sat/wu72790 \div 574 \approx 126.81 \ \mathtt {sat/wu}

sat/vbyte

vbyte 称作虚拟字节。目的是为了降低 Witness 在交易数据中的权重, 从而降低交易费用。

交易的虚拟字节大小等于其总权重除以 4。或者将见证数据大小乘以 0.25, 即将见证数据的每个字节当成 0.25 个字节, 再加上非见证数据大小, 其结果与总权重除以 4 相同。

上面示例中虚拟字节大小等于 574÷4=143.5 vbyte574 \div 4 = 143.5 \ \mathtt {vbyte}

或者 110×0.25+116=143.5 vbyte110 \times 0.25 + 116 = 143.5 \ \mathtt {vbyte}

当交易费是 72790 sat, 交易费率为 72790÷143.5507.24 sat/vbyte72790 \div 143.5 \approx 507.24 \ \mathtt {sat/vbyte}

Copyright © 2024 HeapUp