以易于理解的方式解释了比特币交易中的“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. gearmand安装过程

    51 cd boost_1_53_0 52 tail -f build_log 53 dir 54 cd gearmand-1.1.8 55 ./configure 56 could not find ...

  2. 2017.9.24 基于HTML+JavaScript+CSS的开发案例&&JavaScript+CSS+DIV实现表格变色

    1.JavaScript+CSS+DIV实现下拉菜单 1.1 层标签<div> 基本语法: <div id="层编号" style="position: ...

  3. C语言文件操作类型速查

    文件使用方式 含义 "r"(只读) 为输入打开一个文本文件,不存在则失败 "w"(只写) 为输出打开一个文本文件,不存在则新建,存在则删除后再新建 " ...

  4. JavaEE权限管理系统的搭建(二)--------聚合工程项目的创建和依赖关系

    本项目是一个聚合工程,所以要先搭建一个聚合工程的框架 搭建完成的项目结构图如下: 首先创建父项目:pom类型 子模块:web层的搭建,war类型 把这个两个目录标记为对应的类型 其他子模块:和serv ...

  5. 第1章-如何使用本书—零死角玩转STM32-F429系列

    第1章    如何使用本书 1.1    本书的参考资料 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  6. C#定义常量的两种方法

    在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant).前者用“const”来定义,后者用“readonl ...

  7. ES6的数组方法之Array.from

    首先说说什么是数组:数组在类型划分上归为Object,属于比较特殊的对象,数组的索引值类似于对象的key值. 数组的几个注意点: 1.数组的长度是可读属性,不可更改,数组的长度根据索引最大值. 2.数 ...

  8. Java分享笔记:泛型机制的程序演示

    package packA; import java.util.*; public class GenericDemo { public static void main(String[] args) ...

  9. 爬虫学习(十六)——jsonpath

    jsonpath介绍 jsonpath是一种信息抽取类库,是从json文档中抽取指定信息的工具,提供多种语言实现的版本 jsonpath对json来说,就相当于xpath对于xml jsonpath和 ...

  10. Eclipse编写JavaFX环境配置

    配置eclipse用于写JavaFX:1.确定JRE中有jfxrt.jar---jdk82.选中项目-->属性-->Java Build Path3.Libraries-->jre包 ...