主页 > imtoken钱包官方网址 > 比特币UTXO模型介绍

比特币UTXO模型介绍

imtoken钱包官方网址 2023-06-28 05:13:48

如果你曾经去 BlockExplorer 观察你的比特币收入,你是否感到困惑?这正是因为比特币使用的交易模型并不是我们直观理解的基于账户的,而是一种叫做UTXO的模型。在我之前的文章:《深入了解NEX:Neon Exchange》中,我也提到了比特币使用的UTXO模型和以太坊使用的账户模型的一些功能差异,但是这两种模型有什么区别呢?在哪里?

ETH 和账户模型

以太坊使用的账户模型更容易理解,就好像我们每个人都有一个建行账户一样。在以太坊的世界里,每个地址就像一个账户。每次借记和交易后,账户余额将记录在区块链中。因此,在验证交易时检查账户是否有足够的余额就足够了。这种方法简单、直观,更有利于智能合约的开发。如果你去 Etherscan 观察你的交易记录,你会发现一切都简单易懂。输入您的交易 ID 后,您将看到以下屏幕:

比特币UTXO模型介绍

简单的从A到B,只要懂英文就应该可以理解。

比特币和 UTXO 模型

UTXO的全称是Unspent Transaction Outputs,不消耗交易输出,与账户模型相比不是那么直观。

在比特币世界中,没有单一的账本可以跟踪所有账户余额。那么如何确定一个地址当前有多少余额呢?简单地说,你必须回顾所有之前的交易,找到所有发送给你的比特币,并将它们全部加起来才能找到。

交易中的输入和输出

比特币中的“交易”也更复杂。假设明天 Fred 给 Alice 2 BTC,Ted 给 Alice 3 BTC,我们把这两个 BTC 发给 Alice,5 个 BTC 的总和称为 Unspent Transaction Outputs,也就是未花费的交易输出:也就是说 Alice 现在有他有两个未使用的交易输出,可以用作他将来将钱转给其他人的输入。

如果 Alice 现在想向 Bob 转账 5 个 BTC,他将使用上面两个总和正好为 5 的 UTXO 作为本次交易的输入。矿工需要验证的是,在上一个区块中没有其他交易使用过这个未使用的输出。如果已经发送了相同的输出,则不是 Unspent,这就是比特币防止双重支出的方式。

比特币UTXO模型介绍

另一个条件是输出应该与总输入匹配。事实上,在交易的时候,不可能总是找到两个等于你要转账的金额的输出,就像上图一样,如果 Alice 只想转账 4.5 如果给 BTC Bob,那么他必须添加额外的输出列,并将额外的 0.5 BTC 转移给自己。这种交易是平衡的。

我们实际上可以看看比特币交易的样子。现在如果我们想在 BlockExplorer 上观察自己的交易记录,我们会发现它是这样的:

比特币UTXO模型介绍

一笔交易包含大量的输入和输出,很可能是一个交易所转账金额的记录,所以它包含了很多输出。右边的输入可能是转入金额交易所钱包的大量交易输出。

有趣的是,我们实际上无法“确定”交易中的真实交易金额。例如,在下面的记录中,右侧包含三个输出。我们很难确定 0.2、0.03 和 56.38 这三个输出中哪一个是真实的。目的地。可能 Alice 只有一个 Unspent Transaction Output 不消耗 56.61 BTC,所以在这次交易中,虽然他只想转账 0.2BTC,但他必须使用他唯一的一个 UTXO,剩下的56.38 去我自己。

比特币UTXO模型介绍

当然,现在的比特币钱包已经帮我们处理了这种事情,所以在使用的时候,就像建行账户一样,我们只要输出目的地址,钱包就会帮我们找到适当的未使用输出(UTXO)作为完成交易的输入。但是如果你太忙了,或者想做一些你不想让你知道的事情,你可以打包自己奇怪的输入输出来减少匿名性。

UTXO 的优缺点

UTXO 允许多个并行交易,因为没有账户。如果你有很多 UTXO,你可以同时进行多个交易而不会被阻塞。然后是匿名性,如前所述,您可以轻松隐藏您的交易目的。另外,UTXO也被认为是比较安全和高效的,可以通过简单支付验证(SPV)快速验证和验证交易。

但是 UTXO 最大的缺点是它是无状态的比特币输了怎么办,这对于在其上开发应用程序尤其不利。就像众所周知的 Qtum 实际上是一种 UTXO 交易模式,但 Account Abstraction Layer 仍将被设计为使应用程序开发更容易。

总结

现在区块链应用开发风靡一时,UTXO 往往被你视为只能简单处理交易的模型。我认为它在一定程度上是时代的产物!毕竟比特币输了怎么办,距离比特币的发明已经六年了。尽管有些功能是不可替代的,但您仍然更愿意转向帐户模型或混合架构。

但无论如何,比特币永远是区块链世界的领头羊!而且现在还要用BTC交易,所以还是有必要了解一下UTXO的操作!

总之,希望这篇文章能让你对比特币有更深入的了解!

安利两篇教程:java比特币开发、php比特币开发,主要内容是区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO,集成了比特币创建地址、管理钱包、构建裸交易等支持功能,等等。希望对你有帮助。