跳到主要内容

交易体积

介绍如何计算交易的体积,用来确定交易的手续费。

交易体积通常以字节为单位,通过计算交易的输入、输出和其他字段的大小来确定。

交易体积的组成部分

比特币交易由以下部分组成:

1. 版本号

  • 大小:4字节
  • 作用:指示交易格式和协议版本。

2. 输入计数器

  • 大小:1-9字节(可变长度整数)
  • 作用:指示交易中包含的输入数量。

3. 输入

每个输入由以下字段组成:

  • 前交易哈希(previous transaction hash):32字节
  • 前输出索引(previous output index):4字节
  • 解锁脚本长度(scriptSig length):1-9字节(可变长度整数)
  • 解锁脚本(scriptSig):通常为107字节(签名和公钥的典型大小)
  • 序列号(sequence):4字节

4. 输出计数器

  • 大小:1-9字节(可变长度整数)
  • 作用:指示交易中包含的输出数量。

5. 输出

每个输出由以下字段组成:

  • 数量(value):8字节
  • 锁定脚本长度(scriptPubKey length):1-9字节(可变长度整数)
  • 锁定脚本(scriptPubKey):通常为25字节(P2PKH的典型大小)

6. 锁定时间(LockTime)

  • 大小:4字节
  • 作用:指定交易可以被加入区块链的时间或区块高度。

计算交易体积的步骤

1. 计算固定字段的大小

  • 版本号:4字节
  • 锁定时间:4字节

2. 计算输入和输出计数器的大小

假设我们有n个输入和m个输出,输入计数器和输出计数器的大小取决于n和m的值,通常为1字节。

3. 计算所有输入的大小

每个输入的大小为:

前交易哈希(32字节) + 前输出索引(4字节) + 解锁脚本长度(1-9字节) + 解锁脚本(约107字节) + 序列号(4字节)

4. 计算所有输出的大小

每个输出的大小为:

数量(8字节) + 锁定脚本长度(1-9字节) + 锁定脚本(约25字节)

5. 计算总交易体积

将上述部分的大小相加,得到交易的总体积。

示例

假设有一个交易,包含2个输入和2个输出:

  • 版本号:4字节
  • 输入计数器:1字节
  • 每个输入:148字节
  • 输出计数器:1字节
  • 每个输出:34字节
  • 锁定时间:4字节

计算:

总体积 = 4(版本号) + 1(输入计数器) + 2*148(输入) + 1(输出计数器) + 2*34(输出) + 4(锁定时间)
总体积 = 4 + 1 + 296 + 1 + 68 + 4 = 374字节

通过以上步骤,可以准确计算比特币交易的体积。这对于设置合适的手续费和确保交易快速确认非常重要。