主页 > imtoken客户端下载地址 > 什么是UTXO?浅谈比特币账户模型

什么是UTXO?浅谈比特币账户模型

imtoken客户端下载地址 2023-12-25 05:11:29

1:什么是UTXO?

UTXO的英文全称是Unspent Transaction Output,中文翻译为:未花费的交易输出。 我们可以将 UTXO 理解为交易过程中的一种数据结构。 未花费的交易输出UTXO是包含交易数据和执行代码的数据结构,一般可以理解为某个仓库(某个地址)已经收到但还没有花费的加密数字货币。 基于区块链的加密货币使用 UTXO 来验证一个人(实际上是一个地址)是否拥有未使用的加密货币用于支付。

UTXO模型是由中本聪在比特币模型中创建并引用的,因为说到UTXO,我们总是首先想到比特币,但需要指出的是,UTXO并不是比特币独有的,当然UTXO和区块链也没有必然联系,比如你可以模仿比特币但不使用UTXO模型。

PS:有些博文解释为未消费的交易输出。

我个人认为这是不合理的。 比特币的流通过程是一个输入输出的过程。 我们知道,比特币只是其中一种以区块链为底层技术的应用,所以比特币本身实践的是“价值”的传递(“价值”传递方式是为了区分当前在“数据”上的传递(字节复制)互联网,例如传输文件)。 这个价值转移的过程其实就是一个交易过程。

话虽如此,我想解释一下TX的含义。 通过上面的英文全名分析,我们知道TX替换Transiaction。 但为什么?

原因一:在比特币社区,大家习惯性的使用TX而不是Transaction。

比特币区块描述

其中:TX代表Transaction,数字“44”代表这个区块打包的交易数量。

PS1:关于区块结构及解析,本专栏系列文章会详细讲解,敬请期待。

PS2:至于什么是加密数字货币浏览器? 什么是加密货币(什么是比特币)? 将在本专栏系列文章中详细讲解卖出比特币是合法收入嘛,敬请期待。

2:什么是常规账户余额系统和比特币账户模型?

我们通常理解的账户余额系统是什么样的?这里有一个转账的例子

案例背景:TT在第三方集中支付系统账户(如招商银行账户)有1000元存款,ZY有2000元,TXT有3000元。

操作如下:

操作一:TT于某日向ZY转800元; 操作2:ZY再转500元到TXT。

假设平台手续费为0,那么在每一步操作中,第三方支付账户系统需要做如下逻辑(以操作1为例):

(1)判断TT账户余额是否足够800元。 否则,操作将失败,交易将被取消。 转到(2)如果够了;

(2)TT账户余额减少800,ZY账户余额增加500; 这一步是一个事务性的操作,可以理解为成功和失败。

在步骤(2)中,如果时间间隔存在时间差(现实中会出现这种情况),那么就会出现常见的“双花问题”(也叫双重支付攻击,double spent attack)

操作1结束,操作2类似,不再赘述,如下图

数字货币比特币是合法的吗_卖出比特币是合法收入嘛_比特币哪些国家合法

转移操作前的初始状态

卖出比特币是合法收入嘛_比特币哪些国家合法_数字货币比特币是合法的吗

操作1转账后余额状态

数字货币比特币是合法的吗_比特币哪些国家合法_卖出比特币是合法收入嘛

操作2转账后的余额状态

(1)目前银行支付系统和证券交易系统,包括互联网第三方支付系统(如支付宝等)的核心都是基于账户(account based)的设计,底层数据是由关系数据库(RMDB:Relation Manage DataBase)支持。

(2)RMDB的优点是可以支持事务性操作,RMDB的ACID特性(原子性、一致性、隔离性、持久性)。

比特币的账户模型基于 UTXO 数据结构

业内流行一句话:“其实没有比特币,只有UTXO”——孟岩; 个人同意。

在一笔比特币交易中,每笔交易都会有“交易输入”(即资产的来源)和“交易输出”(即资产的去向,当然在比特币模型中称为未花费的交易输出) .

可以通俗地理解:别人付给你的钱是“交易输入”,你收到的钱是“交易输出”。

每笔交易中可能有多个“交易输入”和多个“交易输出”。 每个事务都按照时间戳发生的顺序使用固定编码进行编程。

而且,任何一个“交易输入”都是前一个订单中某个交易产生的一个“未花费的交易输出”,就像连接一条链一样,前后环环相扣,前一个链块的输出就是下一个链块的输入。下一个链块。

比特币哪些国家合法_卖出比特币是合法收入嘛_数字货币比特币是合法的吗

UTXO交易的构成

比特币交易的过程是什么样的? 下面举例说明:

案例背景:TT的钱包(对应公钥地址A)有12.5个比特币(实际为UTXO),ZY钱包(对应公钥地址B)有5个比特币,TXT钱包(对应公钥地址C)有0个比特币它。

操作(1)TT向TXT支付一笔5比特币;

操作(2)TT向TXT再支付2个比特币;

操作(3)ZY向TXT支付1个比特币;

操作(4)TXT转账给别人支付一笔3.5个比特币。

那么,一个比特币(UTXO)找零在TXT的钱包里是什么样子的呢?

比特币变动结果如下:

操作(1)后,TXT钱包中有一条大小为5的UTXO收入交易记录,共计一条,净UTXO:5条;

(2)操作后,TXT钱包中有两条大小为5的UTXO收入交易记录和一条大小为2的UTXO收入交易,净UTXO:7;

(3)操作后,TXT钱包中有3条UTXO收入交易记录,一条大小为5,一条大小为2,一条大小为1,净UTXO为8;

警告:

(4)操作后,在TXT钱包中基于(3),增加一条支出大小为5 UTXO,再增加一条大小为1.5的收入交易记录。 Net UTXO:3-->4.5(最终状态);

为什么?

原因是:在UTXO模型中,交易处理的基本单位是交易记录,任何一笔交易的输入都是某笔交易的输出。 可以简单理解为:以上三种收益分别为1、2、5的UTXO是面额为1、2、5的三种币,币的消费不会断,只适当花掉其中一种币,然后接受对方找零(其实不是对方找零,比特币交易系统自动帮我们做找零操作,UTXO接收方(目标地址)无法感知);

总结一下,UTXO的三大原则

1)所有交易都从coinbase开始(即从挖矿奖励开始);

2)除coinbase交易外,所有交易输入必须来自之前一笔或数笔交易的UTXO输出。

3)每笔交易的总交易支出等于总交易收入;

UTXO和支付系统账户模型有什么区别?

1)在比特币系统中,没有账户的概念,也就没有余额的概念,有的只是UTXO。 在比特币交易系统中,通过一系列相关联的交易来计算。 概念),一共有多少个UTXO,这个UTXO的计算值用来判断一个地址是否有能力转账一笔交易。

2)区别

在支付系统的账户模型中,一个账户有一个账户名(账户唯一ID)和一个密码,通过对账户ID和密码的认证,获得账户的使用权和控制权。 也就是说,账户中的所有资产都属于通过密码安全认证的人。

在比特币交易系统中,没有账户ID和账户密码,也没有账户余额计算。 但是有公钥(钱包地址)和秘钥,可以简单类比理解:公钥就是账户ID,私钥就是账户密码。 在比特币交易系统中,如果知道对方的公钥,就可以向对方转账进行交易。 拥有私钥就意味着有权使用和控制该地址下的所有UTXO。

个人理解:UTXO账户模型中没有账户余额的概念。 输入/输出记录只有一条,都是交易记录。 A转5个比特币给B,也就是说这笔交易的输入是5,来自A的账户地址,交易输出也是5,输出的交易地址是B的账户地址

比特币哪些国家合法_数字货币比特币是合法的吗_卖出比特币是合法收入嘛

1)001号交易为Coinbase交易,即挖矿交易。 在这笔交易中,“输入”部分没有对应的“输出”,而是系统直接奖励并发行比特币。 矿工 Alice 得到 12.5 个比特币的奖励放在 001 号交易的“输出”部分。此时,对于有权控制这 12.5 个比特币的 Alice 来说,这 12.5 个比特币的输出可以作为“输入” ”的下一笔交易。 顾名思义,这个“输出”叫做 Alice 的 unspent output,就是 Alice 的 UTXO 的意思。

2)在002号交易中,Alice转了6个比特币到Bob的地址,Alice找到了自己的UTXO(如果Alice有多个UTXO,可以按照一定的规则选择,比如先花掉小的)。 由于只需要转出6个比特币,但是​​UTXO中有12.5个,需要将其中的6.5个改成自己的地址,从而导致002号交易输出。注意002号交易输出中Alice的地址是可以和001号Alice的地址不一样卖出比特币是合法收入嘛,只要属于Alice自己的钱包地址即可。

3)在003号交易中,Bob转了2个比特币到Lily的地址。 过程与002号交易相同,这里不再赘述。

4)交易的输入使用上一笔交易的输出