主页 > imtoken下载链接 > UTXO:未使用的交易输出,比特币的核心概念之一

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

imtoken下载链接 2023-09-04 05:10:38

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

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

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

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

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

现在,我将启动一个转账交易,其中该交易的输入是允许我拥有这些比特币的最后一笔交易。

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

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

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

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

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

未使用的交易输出 (UTXO) 与熟悉的银行账户有很大不同。为什么要使用这种设计?比较银行账户和比特币的 UTXO,我们可以看到 UTXO 的优势。 1) UTXO 设计易于确认比特币的所有权。如果采用传统的账户设计,当我想转出8个比特币时,为了完全避免欺诈,我们需要一一追溯确认之前的每一笔交易。 ,从而证明我确实有 8 个比特币。

使用当前的 UTXO 设计,要确认我拥有 8 个比特币,只需确认我确实在最后一笔交易中获得了它们。通常,只要最后一笔交易是真实的,我就拥有这些比特币。而我们都知道,一个区块被确认了6次,里面的交易才算真实无误。 2) UTXO 设计与区块链账本完全集成。区块链账本存储状态。以太坊是对比特币区块链的改进。在白皮书中,以太坊创始人 Vitalik 分析了比特币。他认为“比特币账本可以被认为是一个状态转换系统”。以太坊也采用了这种状态转换系统的设计,但对其进行了改进。

从微观上看,区块链中的每一笔交易都是一个状态转换函数。以太坊白皮书使用“以太坊状态转换函数”来讨论区块链中的状态转换函数。上次交易的进度。几乎所有的区块链都使用这种设计比特币被盗地址,每个新区块与之前的所有区块形成一个新状态,以此类推。确认后,之前的状态不可篡改,即不可随意更改。 UTXO(未使用的交易输出)旨在对应于这种状态。加深对UTXO的理解 UTXO是未花费交易输出(unspent transaction outputs)的缩写。每个比特币实际上都是 UTXO,这是比特币的核心概念之一。参考文献:《区块链:科技驱动金融》中的对应讨论,以及文章《比特币与以太坊的记账方式——UTXO与账户余额》(黄士良/文)。您的比特币是 UXTO 比特币挖矿节点,可以获得新区块的挖矿奖励,例如 12.5 个比特币。这时,它的钱包地址得到一个UTXO,即新区块的一个coinbase交易(也称为造币交易)的输出。 coinbase 交易是一种特殊的交易,没有输入,只有输出。

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

这就是为什么有人说这个世界上根本没有比特币,只有UTXO,你地址里的比特币指的是未花费的交易输出。看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 想将这些比特币转给其他人,请重复上述过程。

简单地说,比特币从一个地址转移到另一个地址的过程,就是用这个地址对应的私钥打开并加密到另一个地址的过程。这个私钥的打开和加密就是签名的过程。在这个过程中,接收比特币的一方不需要使用自己的私钥。我的比特币是什么?它们存储在哪里?刚接触比特币的人会问:我的比特币是什么样的?它们存储在哪里?

如果你心目中的参考是在现实世界中购买金币,那么这就很不一样了,你的比特币没有存储在你的家中或金库中,没有数字文件意味着“你的比特币”比特币。

如果您提到银行存款,那么您可以假设您的比特币“存在”在一个分类账中,我们已经知道在数字世界中,价值是分类账中的“记录”。

不同之处在于比特币被盗地址,对于比特币来说,这个账本不是银行的中心化数据库。比特币的账本是存在于去中心化网络上的分布式账本。任何人都可以访问网络并下载分类帐。但是,您地址中的比特币只能使用您的私钥。

我们也可以换个角度来看,你的比特币在哪里?如前所述,比特币是UTXO,那么比特币可以看作是物理世界中金币和银行存款这两个概念的混合体:为什么UTXO形式的UTXO与我们熟悉的账户概念有很大不同。账户是我们每天接触最多的东西。比如我在银行开了一个账户,账户里的余额就是我的钱。

但是比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址有多个UTXO,你的钱就是所有这些地址中UTXO的总和。

中本聪发明比特币的目标是创造一种点对点的电子现金,而UTXO的设计可以看作是参考了现金的思想:我们可以在这个口袋里装点现金,在那个柜子的角落里放一些现金,在这种情况下没有帐户,你到处放的现金加起来就是你所有的钱。

UTXO 设计还有一个技术原因,这种特殊的数据结构使得双花更容易验证。对比:

这种设计使比特币系统作为电子现金系统具有很强的可扩展性。当然,我们很快就会看到,通常被认为是区块链2.0的以太坊并没有继续采用UTXO的设计,而是考虑到其他因素,采用了不惜代价的账户余额设计中本聪可能考虑过的复杂性。