进阶篇4.1 UTXO模型
在我们讨论区块链上的交易(TX)如何工作以及有哪些不同的类型之前,我们需要先向您介绍UTXO(未使用的交易输出)模型。
您只需想像银行如何对您的银行帐户进行计账处理时,这就非常直观了。您在帐户中持有一定数量的资金,其中包含一个帐号。如果您收到交易,金额将添加到您的余额中。如果您花钱,那么您的支出金额将从您的余额中扣除。使用加密货币,计账工作有点不同。
区块链不会为您创建一个“帐户”来维持余额。分布式帐本上没有最终余额。区块链仅存储单个交易并检查您的余额,还有一个额外的步骤。对于此步骤,您将使用您的钱包,无论何时打开它并显示您的余额,您都可以自动执行此操作,或者您可以使用块浏览器手动执行此操作。当您使用这些工具中的任何一个时,在后台发生的事情是他们在账本中搜索您的地址上涉及到的所有交易。钱包(或资源管理器)然后将所有传入的交易一起添加并减去所有输出交易以获得当前余额。
区块链上的每个交易都有一个或多个输入和一个或多个输出。 让我们看一下四个交易系列中的一个实际例子:
通常,区块浏览器会首先显示最近的交易。 我们将以相反的方式查询此示例的交易:从最早的TX开始,逐步查看特定地址发生的情况。
举个例子
我们创建了这个简单的例子,只涉及两个不同的地址。我们缩短了地址以提高可读性。我们在这里关注的地址是灰色的:znRwe ......让我们说这是Bob而另一个(蓝色)是Alice。
在第一个TX(上图)中,Bob的地址在他收到10.2 ZEN时获得资助。单个TX有一个输入和两个输出。第一个输出(10.2 ZEN)是Alice实际想要传输给Bob的,第二个输出称为找零。 Alice正在使用的输入是她之前收到的交易的输出。当她仍然保持资金不变时,这是一个未花费的交易输出(UTXO)。如果花费了交易输出,则由(S)表示。如果交易未支出,则在金额后面跟(U)表示。但我们会在一分钟内回到这一点。爱丽丝没有一个正好是10.2 ZEN的UTXO所以她使用了一个更大的UTXO并将剩下的ZEN送回给自己,正如你在50美元的50美元钞票中支付45美元一样,你会收到来自商店的找零。
在第二个事务中,Bob使用他的10.2 ZEN的UTXO创建一个TX,他花费5 ZEN并将5.1999 ZEN的找零发送回他自己的地址。 输入和输出之间的差异作为交易费用消耗。 他现在在他的znRwe ...地址拥有5.1999 ZEN。
在第三次交易中,Bob收到另外2个ZEN,将余额增加到7.1999 ZEN。 他现在有两个UTXO用于进一步交易:一个是5.1999 ZEN,另一个是2ZEN。 如果他在那时打开他的钱包,它会通过查看区块链上的所有交易,过滤掉涉及其地址的那些,然后将所有输入的TX相加并减去所有输出的TX就得到了7.1999 ZEN的余额。
在这个例子的最后一个事务中,Bob想要花费6 ZEN。 那时他所拥有的两个UTXO都不足以达到这个目的。 尽管块浏览器仅显示最后一个事务的一个输入,但钱包在创建时实际上使用了两个输入。 它结合了剩余的UTXO值7.1999并用它创建了两个输出:他实际想要花费的6 ZEN输出和1.1998(1.1999减去交易费用)的额外输出。
您可以看到两个TX输出都已用完,在第二个和第三个屏幕截图中由它们旁边的(S)表示。
总结
大多数区块链使用UTXO模型进行核算。有一些例外,例如以太坊,它实际上使用了账户模型。发送给您的交易的输出将用作创建输出交易的输入。
当人们问,实际上ZEN或比特币是什么时,这就是准确的答案。您可以使用私钥解锁的未花费的交易输出或UTXO就是您的硬币。这理解起来并不抽象。可能需要一点时间或第二次阅读才能熟悉这一点,但这是一个简洁明了的概念,我们希望上面的例子能帮助您理解UTXO模型的内容。如果您完全了解UTXO模型,那么理解以下文章将对您有所帮助。
下一篇文章介绍区块浏览器,这是一个允许您访问区块链信息的工具,例如Web浏览器如何让您访问互联网上的信息。这就是我们上面截图的内容。我们鼓励您使用它,因为如果您自己浏览一些交易,它有助于理解UTXO模型和区块链。
微信群加:gyshiyi
知识星球:https://t.zsxq.com/7uNJaiI
中文电报群:https://t.me/joinchat/F_PCzUZpS76NkG-E_Yz4hg
英文电报群:t.me/horizencommunity