主页 > imtoken苹果版下载 > utxo模型_【区块链探索笔记十一】:UTXO

utxo模型_【区块链探索笔记十一】:UTXO

imtoken苹果版下载 2023-02-07 05:54:27

什么是 UTXO

在比特币钱包中,我们通常可以看到账户余额,但在中本聪设计的比特币系统中,并没有余额的概念。 “比特币余额”是比特币钱包应用程序的衍生产品。 中本聪发明了 UTXO 交易模型,并将其应用于比特币。

UTXO(Unspent Transaction Outputs)是未花费的交易输出,是比特币交易生成和验证的核心概念。 交易构成了一套链式结构。 所有合法的比特币交易都可以追溯到一笔或多笔交易的输出。 这些链条的源头是挖矿奖励,终点是当前未花费的交易产出。

基于账户的交易

我们先看看传统的交易是怎么进行的:我们设计一个支付系统,给张三一个账户,余额是100元,李四有一个账户,余额是50元。 当张三要付给李四20块钱时,进行如下操作:

比特币到底了没有_比特币分叉影响比特币总量_808比特币创始人颜万卫 炮制比特币风险大

1、查看张三账户余额是否充足,如果不足20元,交易将终止,张三会报“余额不足”

2、从张三的账户中扣除20元(假设手续费为零)

3.给李四的账户充值20元

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

808比特币创始人颜万卫 炮制比特币风险大_比特币到底了没有_比特币分叉影响比特币总量

基于 UTXO 的交易

要理解UTXO,最简单的方法就是描述一个比特币从诞生到在商业世界中沉浮的经历。 我们假设这样一个场景:张三挖出了12.5个比特币。 几天后,他将其中的2.5付给了李斯。 几天后,他和李四各出资2.5个比特币凑成5个比特币支付给王五。

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

每笔交易都有若干交易输入,即资金来源,以及若干交易输出,即资金去向。 一般来说,每笔交易都需要花费(spend)一个输入并产生一个输出,而产生的输出就是“未花费的交易输出”比特币到底了没有,即UTXO。

比特币分叉影响比特币总量_808比特币创始人颜万卫 炮制比特币风险大_比特币到底了没有

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

第一,除了coinbase交易,所有的资金来源都必须来自之前一笔或几笔交易的UTXO,就像水管一样,一个接一个比特币到底了没有,一个进一个进一个进一个出,没完没了,资金在交易之间流动。

其次,任何一笔交易中交易输入的总量必须等于交易输出的总量,等式两边必须平衡。

上图中的第一笔交易#1001 是一笔 coinbase 交易。 比特币是由矿工开采的。 当矿机好不容易找到一个合格的区块后,它就获得了创建一个coinbase交易的特权,在里面放入新的金额,交易输出的收款人地址在第一栏,把你的地址写成正方式。 假设这个比特币的数量是12.5,这个coinbase交易连同张三挖出的区块一起被各个节点接受,经过六次确认后将永远铭刻在历史中。

比特币分叉影响比特币总量_比特币到底了没有_808比特币创始人颜万卫 炮制比特币风险大

几天后,张三打算支付给李四2.5个比特币,张三发起#2001交易,这笔交易的资金来源写着“#1001(1)”,即#1001交易——第一笔张三挖矿的coinbase交易的UTXO。 然后在本次交易的交易输出UTXO项中,设置2.5个比特币的收款人地址为李四的地址。

请注意,本次交易必须消耗掉之前产生的12.5个比特币的所有输出项,而由于张三只打算支付给李四2.5个比特币,所以为了消耗掉剩余的10个比特币,他必须要支付剩余的10个比特币来我自己,从而遵守输入输出平衡的规则。

过几天,张三和李四打算结合AA系统,给王五支付5个比特币。 然后张三或李四发起交易#3001。 在交易输入部分,有两个资金来源,分别是#2001(1)和#2001(2),分别代表第(1)和第(2)项UTXO。 然后在这笔交易的输出部分做同样的事情,给王五5个比特币,剩下的7.5个比特币还给张三。 如果王五以后要花掉他的5个比特币,他必须在交易中注明资金来源#3001(1)。

所以,实际上,没有比特币,只有UTXO。 我们说张三拥有10个比特币,其实我的意思是在现在的区块链账本中,几笔交易的UTXO项目的收款人都是张三的地址写的,这些UTXO项目的金额总和就是10个账户我们在比特币钱包中看到的余额实际上是由钱包通过扫描区块链并汇总属于用户的所有 UTXO 来计算的。

808比特币创始人颜万卫 炮制比特币风险大_比特币到底了没有_比特币分叉影响比特币总量

两种交易方式的比较

1. UTXO只需要看最后一笔交易,而账户系统需要在查看完整的历史数据后,将所有的增减操作相加,得到正确的余额。 两者之间的效率差异会随着时间的推移越来越大;

2. UTXO可以在未来切割历史旧数据,而账户系统不能丢弃旧数据。 前者区块链可以控制整体规模,后者只能不断扩张。

一点点想法

比特币规定每笔新交易的输入必须是某笔交易未花费的输出,每笔输入还需要用之前输出对应的私钥进行签名,每个比特币节点都会将当前的UTXO存储在整个区块链上,全网节点通过UTXO和签名算法验证新的交易。