UTXO

目的: 了解UTXO的概念

要点:

  1. UTXO的概念
  2. NEO中UTXO的结构

UTXO的概念

如果你熟悉区块链或之前使用过数字货币的话,你可能听说过 UTXO 这个词。UTXO代表未花费的交易输出 ,它表示区块链上未被花费交易的输出,可作为新交易的输入。

当使用数字货币钱包时,你可能会看到代表账户余额的数字。事实上,如果它是基于UTXO模型的区块链,就会有 账户余额 的概念。实际上,存储的数字是由钱包应用程序聚合产生的,而使用的来源就是UTXO。UTXO的概念与现实生活中的钱包非常相似。假设你打开钱包,看到100美元。你不知道100美元从哪里来。它可能是你的客户给你付款,作为你上周网站设计的报酬,这就是一个UTXO,它来自于你的客户,金额是100美元。然后,你想从钱包里拿出10美元买一本杂志。花了10美元后,你得到90美元作为找零。那么你的UTXO现在就是90美元。你在杂志店花的10美元对他来说就像一个UTXO,直到他把它花在他的下一笔交易上。

NEO中的UTXO

NEO区块链支持原生资产,其中最重要的两个是NEO和GAS。原生资产是基于未花费的交易输出(UTXO)的,可得到区块链的原生支持。与此形成对比的是,我们目前所构建的通证完全依赖于定制的智能合约。与账户余额模型不同,UTXO模型不直接记录账户资产,而是通过未花费的输出来计算用户资产。每个UTXO资产(例如全局资产)都是一个输入-输出的关联模型,输入 指示资金来源, 输出 指示资产去处。

在下图中,Alice从她手持NEO中领取到8个GAS,这被记录在交易 #101的第一个输出中。当Alice向Bob转账3个GAS时,新交易记录的输入为8个GAS,表示为交易 #101 的0号输出。此外,在另一个交易 #201 中,一个输出指向转账给Bob的3个GAS,而另一个输出指向返回给Alice自己的5个GAS (找零)。

让我们看一下NEO中的交易结构。如上图所示, 输出 本身具有索引属性,因为它位于输出列表中。输出AssetIdAmountScriptHash 组成,ScriptHash是收款地址。输入 结构指示了交易的来源,它包含一个 PreHash ,它指向交易的来源,以及一个 Preindex ,它指向前一个交易的相应的输出。