知识库详情
BSV知识库

以“词条释义”的形式对比特币区块链技术中经常涉及的术语及基本概念进行专业化的阐释和解读。

未花费交易输出(UTXO)
返回上级
BSV区块链编辑 2022-04-14 18:03 1.01 k

UTXO 是未花费交易输出(unspent transaction output)的英文缩写。比特币区块里的每笔交易都至少有一个输出(output)。输出必须通过数字签名解锁(比特币中的最常见的是ECDSA),才能成为一笔新的交易的输入,从而被花费掉。在输出被用作另一笔交易的输入之前,该输出都被称为 UTXO。

某一时点下,网络里所有 UTXO的集合,被称为 UTXO 集。 UTXO 集代表着当前所有比特币的所有权状态的全貌。当矿工欲将一笔交易添加到区块链的时候,应当对当前的UTXO集进行检查:如果这笔交易的输入存在于当前的UTXO 集里,那么该输入就是有效的。区块链上每产生一个新区块, 网络的UTXO 集都会确定性地进行更新,因此,对于维护着比特币历史账本的节点,每当它们验证了一个新区块后,都将再次同步拥有相同的UTXO集,这使得所有节点都能对新交易中的输入是否有效达成共识。

当节点收到新交易时,对该交易的检查项目之一是检查交易的输入是否是UTXO集中的一个UTXO。如果通过检查,则这个UTXO会从 UTXO 集中取出,临时存储在缓冲区。如果交易被打包到区块里了,那么临时缓冲区里的这个 UTXO 就会被删除掉;如果交易未被打包进区块里,则该 UTXO 将被发送回UTXO 集,因为这个输出没有被花费掉。总之,一旦输出被花费,这个输出就不会再存在于 UTXO 集中。此过程可防止该输出被用于双重支付

被证明的无法花费的输出(unspendable output)

有一部分输出被证明为是不可以被花费的,因此这些输出虽然“未被花费”,但并不会被囊括在 UTXO 集中,并且在未来的任何一笔比特币交易中,这类输出都不需要被验证是否有效。在 2020 年 2 月的创世纪升级之前,比特币交易中, ScriptPubKey 字段以 OP_RETURN 操作码为开头的输出就属于这一类,那时OP_RETURN 操作码脚本执行结束后会返回失败值。但在创世纪升级之后,这些无法花费的输出的解锁脚本直接变成以操作码 OP_FALSE OP_RETURN 为开头。

交易
双重支付
比特币支付
交易手续费
比特币交易
Paymail
比特币数字签名
未花费交易输出(UTXO)
nLocktime与nSequence
支付信道
VOUT
TXID(交易ID)
找零/零钱
交易确认