上图第一个交易#1001号交易是coinbase交易(组图)

资讯 7个月前 manoon
0

UTXO 代表未花费交易输出

交易缩写为TX比特币交易网usc,所以上面的短语缩写为UTXO。

无论是银行信用卡证券交易系统,还是互联网上的第三方支付系统,其核心都是基于账户的设计,以关系数据库为支撑。

数据库必须保证两点。一是要保证遵守业务规则,张三的余额充足。二是保证事务性,即原子性、一致性、隔离性和持久性(ACID)。这种基于账户的设计简单直观,在 IT 系统设计中已经使用了几十年。应该说没有问题。

我们假设这样一个场景:张三挖了 12.5 个比特币。几天后,他将2. 5 付给了李斯。几天后,他和李斯各自贡献了2.5个比特币,赚了5个比特币给王舞。

如果是基于账户的设计,并且张、李、王在数据库中各有一个账户,他们账户的变化如下图所示

但是在比特币中,这个过程是通过UTXO来实现的,如下图所示:

比特币的区块链账本记录了一笔又一笔的交易。

每笔交易都有几个交易输入,它是资金的来源,还有几个交易输出,它是资金的目的地。一般来说,每笔交易花费一个输入,产生一个输出,产生的输出就是“未花费的交易输出”,也就是UTXO。

比特币交易遵循几个规则:

除了coinbase的交易,所有的资金来源都必须来自前一次交易中的一个或几个UTXO,就像一根水管,一个接一个,一个接一个,一进一出,一进一出,无穷无尽,钱在那里。交易之间存在流动。任何交易的交易输入总量必须等于交易输出总量,等式两边必须平衡。

上图中的第一笔交易 #1001 是 coinbase 交易。比特币由矿工开采。当一个矿工竭尽全力寻找一个合格的区块时,它获得了创建一个coinbase交易的特权,将一笔新的钱放入其中,并将其放入交易输出的收款人地址中的一栏中,写下你的地址直立。这笔coinbase交易随着张三挖出的区块被各个节点接受,经过六次确认,将永远铭刻在历史上。

几天后,张三计划向李斯支付2.5个比特币,张三发起了#2001交易。这笔交易的资金来源写的是“#1001(1)”,这是交易#1001的第一个UTXO——张三挖的coinbase交易。然后,在这笔交易的交易输出UTXO项中, put 2.5 Bitcoins 人的地址设置为李斯的地址。

请注意,本次交易必须消耗所有之前的输出项12.5个比特币,而且由于张三只打算支付李斯2.5个比特币,为了消耗剩余的10个比特币,他只好将剩余的10个比特币支付给自己,以满足输入输出平衡的规则。

几天后比特币交易网usc,张三和李斯计划连同AA系统一起向王舞支付5个比特币。然后张三或李斯发起交易#3001。在交易输入部分,有两个资金来源,分别是#2001(1)和#2001(2),代表#2001 Section(1)和Section(1))的交易2) UTXO。然后在这个交易的输出部分按照同样的模式,给王舞5个比特币,把张三剩余的7. 5个比特币还给自己。以后如果王舞想要要花掉他的 5 个比特币,他必须在交易中注明资金来源是 #3001(1).

所以,实际上没有比特币,只有 UTXO。当我们说张三拥有10个比特币的时候,其实我的意思是在目前的区块链账本中,有几笔交易的UTXO项目的收款人写了张三的地址,而这些UTX项目的数量之和就是10个。因为在比特币系统中,一个人所能拥有的地址资源是取之不尽的。要知道你在大量地址中收到了多少UTXO,人们无法计算,需要通过你的比特币钱包进行跟踪计算。

如果使用基于帐户解决方案,则需要数据库。这个数据库可以让你轻松查看张三、李斯各自账户的余额。

当然,UTXO 方案还需要一个数据库,记录当前系统中每一个“未花费的交易输出”,也就是比特币。当一个节点收到一笔交易时,需要在UTXO数据库中查看该交易所引用的UTXO是否存在,以及它的收款人(所有者)是否是当前新交易的付款人。事务结束后,需要对数据库进行相应的更新。

首先要明确的是,无论是账户数据库还是UTXO数据库,都必须是去中心化的,每个节点一个克隆一定不能是中心化的。如果比特币系统有中心数据库,不管你有多少个节点,每一笔交易都要到中心数据库去验证,然后进行“转账”的交易操作,那么“去中心化”就完全无从谈起. 比特币一文不值,还是老老实实用支付宝吧。

从长远来看,账户数据库会无限扩展,而 UTXO 数据库会小得多。

比特币是一个匿名系统,它的账户就是一个“地址”。每个比特币用户可以拥有几乎无限数量的地址。从比特币系统的角度来看,它不知道这两个地址是否对应于同一个人。

在版本控制方面,svn是一个中心化的数据库来维护账本,这自然有悖于区块链的设计。Git 是一个去中心化的数据库,但是会存储过多的冗余数据。对于分发,性能必须大打折扣。UTXO 数据库是一个 git,丢弃历史包袱,只存储最后一个版本。简单实用。

UTXO 具有天然的匿名效应,很难找到一个账户对应的未花费交易。

在性能方面,由于UTXO是独立的数据记录,有很大的并行性,可以提高区块链交易验证的速度。

版权声明:manoon 发表于 2021-12-20 8:56:35。
转载请注明:上图第一个交易#1001号交易是coinbase交易(组图) | 198区块链导航

暂无评论

暂无评论...