Coinbase 交易的结构

通过这些计算,Jing 的节点随后构建 coinbase 交易,以支付他自己的区块奖励。

coinbase 交易具有特殊的格式。它不是像普通交易输入一样指定要花费的前一个 UTXO,而是有一个“coinbase”输入。我们在“Inputs”(第123页)中研究了交易输入。让我们将普通交易输入与 coinbase 交易输入进行比较。表12-1显示了普通交易的结构,而表12-2显示了coinbase交易输入的结构。

表12-1. “正常”交易输入的结构

大小字段描述

32字节

交易哈希(Transaction Hash)

指向要被消费的 UTXO 所在的交易

4字节

输出索引(Output Index)

要被消费的 UTXO 的索引号,第一个是 0

1-9字节(紧凑编码)

脚本长度(Script Size)

脚本长度(以字节为单位),后跟着

可变长度

输入脚本(Input Script)

一个满足UTXO输出脚本条件的脚本

4字节

序列号(Sequence Number)

用于BIP68时间锁定和交易替换信号的多用途字段

表12-2. Coinbase交易输入的结构

大小字段描述

32字节

交易哈希(Transaction Hash)

所有位都是零:不是交易哈希引用

4字节

输出索引(Output Index)

所有位都是一:0xFFFFFFFF

1字节

Coinbase 数据大小(Coinbase Data Size)

Coinbase 数据的长度,从 2 到 100 字节

可变长度

Coinbase 数据(Coinbase Data)

任意数据,用于额外的 nonce 和挖矿标签;在 v2 块中,必须以区块高度开头

4字节

序列号(Sequence Number)

设置为0xFFFFFFFF

在 coinbase 交易中,前两个字段的值不代表 UTXO 引用。第一个字段不是“交易哈希”,而是填充了 32 字节,全部设置为零。而“输出索引”填充了 4 字节,全部设置为 0xFF(十进制 255)。输入脚本被 coinbase 数据替代,这是矿工使用的数据字段,我们将在接下来看到。

Last updated