加载中 ...

(区块链基础)简述UTXO模型和账户模型

2019-10-09 03:02 编辑:btc268.com 来源:区块链资讯

目前的区块链技术中,记账的方式主要有两种形式,以比特币为代表的UTXO模型,UTXO是该记账模式的缩写,它的英文全拼为Unspent Transaction Output,汉语翻译为“未花费的交易输出”;对于“未花费的交易输出”这个名词对于大多数人来说,应该会比较陌生。如果你觉得陌生的话,请接着文章下面的分解。另一种是以以太坊为代表的基于账户/余额的记账模式,基于账户/余额的这种记账模式比较简单了,和现在的银行卡记账方式一样,大多数人都能够很清晰地理解这种模型。

一.解说UTXO模型

  在解说UTXO模型之前,我想先说说一个名词,叫做Transaction,即交易,Transaction和UTXO是相辅相成的,下面先来举个例子:

  张三:通过挖矿得到了120个比特币,现在张三饿了,想要花费2个比特币去购买一个面包。这是只是举例而已,以现在比特币的价格,1个比特币就可以买到一大堆面包了。

  现在我们假设,李四是面包点营业主

  这样的话,在比特币中,张三付给李四将一次性付给李四120块,李四给张三找零118块,这里其实产生了两笔交易,咱们可以这样理解,张三的钱被分成了两份,其中118打给了自己,剩下的2块打给了李四。

  交易与交易之间组成了网状关系,1个交易的输出,成为了下1个交易的输入;下1个交易的输出,又成了下下1个交易的输入。所有的钱,在这个网络中流动,每1笔钱的去向、来源,都是可追溯的,而这也是区块链网络的一个重要特点。

  上面的讲解可能大多数人都比较懵逼,接下来咱们用比较通俗的方式来说明UTXO和Transaction到底是什么

  在现实生活中,一笔转账对应的事一个付款人和一个收款人,而在比特币种,一笔转账对应的事多个转账人和多个收款人。

  现在咱们仔细分析一下上面的这个例子,对于张三买面包这个案列

  付款人:张三 120块 收款人:张三 118块,李四 2块

  张三的120,转118块给自己,转2块给李四,对应到交易里面,就是这笔交易有1个输入,2个输出!

  下面来一个多输入,多输出的案列

  考虑如下场景:用户A和用户B之间发生了一个交易T3,A向B转100元。 A的100元,来自T1:C向A转的80元 T2:D向A转的30元(共110元,但A只转了100元给B,10元找零返回给A的账号)。 同理,C向A转的这80元,来自用户E、F的某次交易...... D向A转的这30元,来自用户E的某次交易......

  这个交易就有2个输入,2个输出: 2个输入(也就是2个UTXO): T1: C向A转的80元 T2:D向A转的30元

  2个输出: B:100元 A:10元(找零)

  当你理解上面的例子时,我们再来说一下UTXO,理解上面的例子对你理解UTXO会特别有帮助。

  1.比特币的交易中不是通过账户的增减来实现的,而是一笔笔关联的输入/输出交易事务。

  2.每一笔的交易都要花费“输入”,然后产生“输出”,这个产生的“输出”就是所谓的“未花费过的交易输出”,也就是UTXO。每一笔交易事务都有一个唯一的编号,称为交易事务ID,这是通过哈希算法计算而来的,当需要引用某一笔交易事务中的“输出”时,主要提供交易事务ID和所处“输出”列表中的序号就可以了。

  3.由于没有账户的概念,因此当“输入”部分的金额大于所需的“输出”时,必须给自己找零,这个找零也是作为交易的一部分包含在“输出”中。

  4.旧的UTXO不断消亡,新的UTXO不断产生。所有的UTXO,组成了UTXO Set 的数据库,存在于每个节点

  5.任何1笔UTXO,有且仅可能被1个交易花费1次

  6.1个UTXO,具有如下的表达形式: 1个UTXO = 1个Transaction ID Output Index

二.UTXO模型的区块链钱包余额形式

  深刻理解了UTXO的概念,钱包就很容易理解了,某个人的钱包的余额 = 属于他的UTXO的总和;在这里,你会发现一个不同于现实世界的“银行”里的一个概念,在银行里,会存储每个账号剩余多少钱。但这里,我们存储的并不是每个账号的余额,而存的是1笔笔的交易,也就是1笔笔的UTXO,每个账户的余额是通过UTXO计算出来的,而不是直接存储余额。

三.账户余额模型

  账户余额模型和当今的银行卡一样,当我们需要花费钱的时候,会去先检查我们的余额是否足够。转账的整个业务流程和银行卡一样的,基于账户的余额。

  扫码关注全栈修炼,带您成为全栈工程师

  

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:(区块链基础)简述UTXO模型和账户模型

原文地址:http://www.btc268.com/qkl/zs/15970.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();