主页 > imtoken安卓官网 > UTXO:未使用的交易输出,比特币的核心概念之一

UTXO:未使用的交易输出,比特币的核心概念之一

imtoken安卓官网 2023-01-16 22:43:32

详细看A到B转账流程

假设A(Alice)向B(Bob)转账,转账过程可以分为三个阶段(见图1):

1) 假设 Alice 之前挖了 12.5 个比特币,这些比特币在她的地址中是用于 coinbase 交易的 UTXO。

2) Alice 发起一笔交易比特币的形式分析,输入是她之前的交易,输出是 Bob 的地址,金额是 12.5 个比特币,Alice 用她的私钥对交易进行签名。

这里简化了交易过程,只讨论转移前一笔交易的所有输出的情况。如果尝试从先前交易的输出中转移一部分比特币,则需要稍微复杂的处理。

根据比特币系统的设计,比特币交易也遵循一个原则:每笔交易的输入值必须全部用完,而不仅仅是一部分。比如钱包地址里只有8个比特币我想给你转比特币,所以很简单,我发起一个交易,把这8个比特币转入你的钱包地址,我签字确认交易。但是如果我的钱包地址里有25个比特币,那么我发起的交易不是把8个比特币转给你比特币的形式分析,然后我的钱包地址里还剩下17个比特币。这时我发起的交易是:从我的钱包地址转8个比特币给你,同时把17个比特币转入我的同一个地址。

比特币的形式分析

3) 当交易被区块链确认后,Alice 的 UTXO 变为 0。在 Bob 的地址中,还有一个 UTXO,数量为 12.5。

图 1:比特币转账的三个阶段

这些存储在 Bob 钱包地址中的比特币只能用 Bob 的私钥签名并转移给其他人。

如果 Bob 想将这些比特币转移给其他人,请重复上述过程。

简单来说,比特币从一个地址转移到另一个地址的过程,就是用这个地址对应的私钥打开比特币,然后加密到另一个地址的过程。这个私钥的打开和加密就是签名的过程。在这个过程中,接收比特币的一方不需要使用自己的私钥。

比特币的形式分析

比特币系统上没有“账户”,只有“地址”。你可以在比特币区块链上打开任意数量的钱包地址,你拥有的比特币数量是你所有钱包地址中比特币的总和。比特币系统无法帮助您将这些地址汇总到您的帐户中。

从我 (A) 到你 (B) 的比特币转账是从我的一个钱包地址到你的一个钱包地址。

以下讨论涉及比特币系统的一个关键技术细节:UTXO(未使用的交易输出)。Token Economics 专家孟岩曾写过一篇题为《其实没有比特币,只有 UTXO》的文章,这篇文章指出了比特币对于计算机的意义——比特币是区块链账本输出的交易。

让我们看一下两人之间的转账交易过程,深入了解UTXO:

假设我有 8 个比特币,这实际上意味着之前有一笔交易将这些比特币转移到我的地址,这次交易的输出(即 8 个比特币)没有被使用,而我拥有这 8 个比特币。

现在,我想发起一笔转账交易,这笔交易的输入是让我拥有这些比特币的最后一笔交易。

比特币的形式分析

我要转账给你,我要做的是,签署让我拥有这 8 个比特币的最后一笔交易,并将这笔新转账交易的输出地址设置为你的钱包地址。

这样,我发起了一笔转账支付交易。当矿工把这笔交易打包成一个新的区块,转账交易完成后,这8个比特币就属于你了。你所拥有的是你的交易中未使用的交易输出。

交易签名中涉及的比特币公私钥的非对称加密机制将在后面讨论。为了便于理解和类比,钱包地址相当于房间号和锁,私钥相当于钥匙,可以打开相应的锁。

上述两人的转账交易流程是:我用私钥(从输出为我地址的一笔交易中)提取比特币,并用私钥签署一笔从我地址到你地址的新交易。交易完成后,比特币会转到您的钱包地址。您钱包中只有您的私钥才能打开的新交易的未使用交易输出。

从上面的讨论中我们可以看出,比特币并不存在,只有未使用的交易输出(UTXO)。每个比特币都源自之前的交易,并且可以一直追溯。一路回溯,在每一个比特币的源头,都有一个特殊的交易,就是比特币矿工挖矿得到奖励,每一个比特币都是通过挖矿创造出来的。假设我作为比特币矿工成功挖了 25 个比特币,这个特定的交易是它的输入是 0,输出是 25 个比特币到矿工的钱包地址。

未使用的交易输出 (UTXO) 与熟悉的银行账户非常不同。为什么要使用这种设计?比较银行账户和比特币的 UTXO,我们可以看到 UTXO 的优势。

比特币的形式分析

UTXO 设计使确认比特币所有权变得容易

如果我使用传统的账户设计,当我想转出8个比特币时,为了完全避免欺诈,我们需要一一追溯确认之前的每一笔交易,从而证明我确实有8个比特币。

使用当前的 UTXO 设计,要确认我拥有 8 个比特币,只需确认我确实在最后一笔交易中获得了它们。通常,只要最后一笔交易是真实的,我就拥有这些比特币。而我们都知道,一个区块被确认了6次,里面的交易才算真实无误。

区块链账本存储状态。以太坊是对比特币区块链的改进。在白皮书中,以太坊创始人 Vitalik 分析了比特币。他认为“比特币账本可以被认为是一个状态转换系统”。以太坊也采用了这种状态转换系统的设计,但对其进行了改进。

从微观上看,区块链中的每一笔交易都是一个状态转换函数。以太坊白皮书使用“以太坊状态转换函数”来讨论区块链上的交易过程。

比特币的形式分析

几乎所有的区块链都使用这种设计,每个新区块与之前的所有区块形成一个新状态,以此类推。确认后,之前的状态不可篡改,即不可随意更改。UTXO(未使用的交易输出)旨在对应于这种状态。

UTXO 是未使用的交易输出(未使用的交易输出)的缩写。每个比特币实际上都是 UTXO,这是比特币的核心概念之一。

参考文献:《区块链:科技驱动金融》中的对应讨论,以及文章《比特币与以太坊的记账方式——UTXO与账户余额》(黄士良/文)。

你的比特币是 UXTO

一个比特币挖矿节点获得一个新区块的挖矿奖励,例如 12.5 个比特币。这时,它的钱包地址得到一个UTXO,就是这个新区块输出的币基交易(也称为造币交易)。coinbase 交易是一种特殊的交易,没有输入,只有输出。

当 A 想将比特币转给 B 时,过程是用私钥对 A 的钱包地址中的前一个 UTXO 进行签名,然后发送到 B 的地址。这个过程是一个新的交易,B得到的是一个新的UTXO。

这就是为什么有人说这个世界上根本没有比特币,只有UTXO,你地址里的比特币是指未使用的交易输出。