UTXO
目的: 了解UTXO的概念
要点:
- UTXO的概念
- 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中的交易结构。如上图所示, 输出
本身具有索引属性,因为它位于输出列表中。输出
由 AssetId
、Amount
和 ScriptHash
组成,ScriptHash是收款地址。输入
结构指示了交易的来源,它包含一个 PreHash
,它指向交易的来源,以及一个 Preindex
,它指向前一个交易的相应的输出。