以易于理解的方式解释了比特币交易中的“UTXO”
UTXO
2017年11月1日

让我们看看当你发一点硬币时会发生什么。

比特币交易通过UTXO执行。通过在比特硬币的所有交易中新生成UTXO并消费UTXO来完成转移。由于UTXO是系统端的一种机制,因此用户不会有意识,但通过计算此UTXO来计算地址的平衡。

在本文中,我将尽可能简单地告诉您复杂的UTXO机制。我们还要考虑UTXO的优点和缺点。

比特币的交易概述
比特币交易流程如下。

UTXO进入UTXO池
有效的UTXO成为事务输入
交易输出成为新的UTXO

从这个流程中可以看出,UTXO在比特币交易中起着核心作用。要记住的第一件事是地址平衡不记录在位硬币的区块链中。

通过计算网络中的所有交易来计算地址的余额。例如,如果有100BTC的平衡的地址A,“地址甲余额:100BTC”和,而不是被记录,“以前地址A 10BTC地址B和30BTC汇地址C,地址d由于我们已收到50 BTC,100 - (10 + 30)+ 50 = 110现在地址A的余额为110 BTC!

为什么bitkines做这么麻烦的计算来计算地址的平衡?这种计算方法正是基于UTXO的平衡管理方法,并且有各种优点。(当然也有缺点。)

什么是UTXO
UTXO(未使用的事务输出)是“未使用的事务的输出”,如果已翻译。比特硬币的交易包括输入和输出。换句话说,位硬币的传送对应于输出,并且存款对应于输入。

来自UTXO的来自此交易的输出。事务输出是UTXO,这个UTXO是下一个事务输入。所以UTXO被称为“未使用的事务输出”。

因此,在块链中的每个块中连接事务。

UTXO

以这种方式,交易流程,即硬币交换是作为UTXO交换完成的。关键是每个事务都使用UTXO,生成新的UTXO,依此类推。

此外,实际交易可能有多个输入和输出。这是因为从多个人(地址)接收硬币,相反硬币被发送到多个地址。(以下“交易”缩写为“Tx”)

UTXO

UTXO的特征
输入事务和输出事务是相等的
交易的每个输入和输出的总和是相等的。此外,交易将收取费用,因此更准确地说,“交易输入=由收款人地址收到的交易输出+交易费用的交易输出”。

UTXO不能分割
UTXO无法拆分。500 BTC UTXO不能分为200 BTC UTXO和300 BTC UTXO,因此500日元硬币不能分为200日元和300日元。那么,你如何将资金从地址A的500比特币转移到200比特币到地址B呢?

当像这样发生UTXO的更改时,您创建自己的地址C以接收更改并在地址C接收200 BTC。地址接收Otsuri没有自己的,因为好,如果你是管理层,但那些谁收到地址C新但从匿名的点创建和隐私的地址是首选偶数地址的问题。

如果您没有指定发送更改的地址,您将作为交易费用交给未成年人。

coinbase交易(阻止第一笔交易)
交易由输入和输出组成,我认为通过UTXO交换创建交易的流程是可以想象的。但是输入来自块中的第一个事务?每个块中的第一个事务是一个例外,它被称为coinbase事务。

coinbase事务没有输入,只有输出存在。coinbase是由生成块的未成年人制作的,并且有轻微的奖励输出次要。

UTXO的好处
通过计算所有上述UTXO来计算地址的余额。这称为UTXO基础。另一方面,在块链中记录直接平衡的方法称为帐户基础。顺便说一句,Eliarium和NEM采用帐户基础。

从这里我们将解释UTXO基础与账户基础相比的优点和缺点。

优秀的隐私保护
UTXO

UTXO的一个优点是它具有出色的隐私保护。如上所述,当从您的地址A汇款到另一方的地址B时,更改是首选创建您自己的地址C并将其发送到该新地址C.

因为外部不知道地址A和地址C属于同一用户。换句话说,我们将地址A的钱发送给两个人,地址B和地址C,或者只发送到地址B,所以我们无法判断地址C是否是变更地址。

另一方面,在基于像以太网的帐户的情况下,没有UTXO的概念,因此不需要生成用于改变的新地址。这是因为地址的余额直接记录在块中,只需从该余额中扣除汇款即可。

当然,即使是在账户的基础上,您也可以将更改发送到您的新地址,但汇款费用也会相应增加。

强大抵抗重播攻击
重播攻击(Replay Attack)是指您可以通过重复在交易所存放硬分叉硬币的行为以及撤销它的行为,在硬叉中获得大量分支版本的硬币。

实施例在实施例中,重放攻击的抵抗力较弱存款在交换位硬币,我会被拉出偶数位相同数量的硬币缓存结合位硬币被拉出。这是因为硬叉分支的每个版本的硬币使用地址/密钥/网络的相同结构。

事实上,虽然对位硬币缓存重放攻击已经重放攻击的措施并没有成为一个问题,如果你没有去过重放攻击的措施如果汇款100BTC从“地址A到地址B在比特币是“它也将收到位硬币缓存,我的交易也发生在同一时间,交易的节点”从地址汇款100BCH一到地址B”。

UTXO基地更能抵抗这种重播攻击。因为,因为地址的天平是UTXO计算,如果是经过艰苦的叉UTXO区别,不能计算在相同的平衡。

另一方面,在帐户基础上,您不能记录交易历史记录,因为地址的余额按原样说明。换句话说,很难区分交易的来源,并削弱重播攻击阻力。当实际采用帐户基础的Ethiaryum实际上分叉到Ethicalam Classic时,在没有采取措施的交易所发生了重播攻击。

UTXO的缺点
实施很复杂
从上面的UTXO评论中可以看出,汇款和汇款的计算相当麻烦。在计算地址中某一点的余额时,有必要计算包括所有UTXO在内的余额。

而且,转账时UTXO的计算变得复杂。如果地址有多个UTXO,您必须选择将哪个UTXO应用于UTXO以进行汇款以及要更改哪个UTXO。对于比特币,交易费用由交易规模决定。

为了尽可能减少交易费用,尽量减少交易规模,即尽可能少地使用UTXO进行汇款,并确保变更的UTXO不会变小(下一笔交易费用会更高)有必要优化它)。

另一方面,在汇款时,您可以通过简单地从区块链中记录的余额中扣除汇款金额和佣金来计算。当然,这些计算是由钱包系统方面完成的,因此用户在正常汇款时无需了解。

由于平衡和汇款的UTXO基础的计算成为具有作为像比特币的货币硬币甚至是复杂的,我认为,进一步的计算和具有智能合同的功能复仇可以想象可能很复杂我会的。因此,Eliarium和NEM采用帐户基础。

UTXO是什么?的更多相关文章

  1. 区块链区块的生成和链接,比特币btc的产生,UTXO的生成和消耗,比特币系统

    区块链区块的生成和链接,比特币btc的产生,UTXO的生成和消耗,比特币系统 区块链区块的生成和链接,比特币btc的产生,UTXO的生成和消耗,比特币系统

  2. Bytom交易说明(UTXO用户自己管理模式)

    比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 该部分主 ...

  3. 比原链设计思考: 扩展性UTXO模型

    用户模型是比原链在最初就需要确定的重要数据结构, 团队的选择还是聚焦在两种典型的模型系统中,Account模型和UTXO模型,和其他大多数区块链设计一样, 选择了模型就决定了协议层的重要实现,两种模型 ...

  4. 比特币交易本质--UTXO(Unspent Transaction Output)

    UTXO 代表 Unspent Transaction Output. Transaction 被简称为 TX,所以上面这个短语缩写为 UTXO. 现在的银行也好.信用卡也好.证券交易系统也好,互联网 ...

  5. 比特币原理——交易与UTXO

    UTXO UTXO (Unspent Transaction Output) 未花费交易输出 传统的支付系统都是基于账户(account based)的,即: 若A向B转账20元 判断A的账户余额大于 ...

  6. UTXO和Account模型一个都不能少

    UTXO对于非区块链从业人员来说可能比较陌生,UTXO的全称是Unspent Transaction Output,这中本聪在比特币中的一个天才设计.而Account模型就很常见,也很容易理解,你银行 ...

  7. 04.UTXO:未使用的交易输出,比特币核心概念之一

    在比特币系统上其实并不存在“账户”,而只有“地址”.只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和.比特币系统并不会帮你把这些地址汇总起来 ...

  8. [转帖]比特币本质其实是UTXO

    比特币本质其实是UTXO https://www.jianshu.com/p/7071e68c5262 其实并没有什么比特币,我们在交易所里或者钱包里显示的比特币余额其实是UTXO.那到底什么是UTX ...

  9. 比特币系列钱包的UTXO总结

    1.通过比特币钱包的WalletNotify配置来处理 本钱包内的交易信息的 推送.BlockNotify数据更多,不适合交易所的监听

随机推荐

  1. php无法保存SESSION问题总汇

    昨天客户又过来说网站的问题,说的也都是些毛毛雨的东西,管理那么多网站,再有这么些客户的存在,本人也是累了,但当登录后台的时候突然发现后台登录不了,查看了一下验证码服务器端的session为空值,之前登 ...

  2. MySQL游标(cursor) 定义及使用

    概念 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据后,结果 ...

  3. GPU计算的后CUDA时代-OpenACC(转)

    在西雅图超级计算大会(SC11)上发布了新的基于指令的加速器并行编程标准,既OpenACC.这个开发标准的目的是让更多的编程人员可以用到GPU计算,同时计算结果可以跨加速器使用,甚至能用在多核CPU上 ...

  4. cudaMallocPitch()

  5. 第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

    第45章     DCMI—OV2640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  6. What is JPA

    What is JPA JPA可以看做是EJB3.0的一部分,但它又不限于EJB 3.0,你可以在Web应用.甚至桌面应用中使用.JPA只是一种Java持久化标准,它意在规范ORM(对象关系映射模型) ...

  7. tcl之array操作

  8. PHP实现qq三方登录

    除了qq第三方登录外.还有微博,微信等第三方登录 qq第三方登录,遵循oauth2.0协议 这里是说明http://www.cnblogs.com/yx520zhao/p/6616686.html q ...

  9. 图解HTTP总结(4)——返回结果的HTTP状态码

    HTTP状态码负责表示客户端HTTP请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作. 状态码的类别 2XX 成功 200 OK 表示从客户端发来的请求在服务器端被正常处理了. 在响应 ...

  10. 25-IHostEnvironment和 IApplicationLifetime介绍

    //类似 global.ashx的application事件的实现1-Startup类中 public void Configure(IApplicationBuilder app, IHosting ...