以易于理解的方式解释了比特币交易中的“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. jQuery 遍历函数包括了用于筛选、查找和串联元素的方法。

    jQuery 参考手册 - 遍历 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集合中. .children() 获得匹配元素集合中每个 ...

  2. hadoop中compare函数

    在看hadoop  的二次排序的时候,改写了下, 加了第三个参数,  本来以为是在 public int compareTo(IntPair o) { System.out.println(" ...

  3. linux下Mycat的安装配置

    1.下载Mycat Linux版:下载链接 2.通过SSH直连工具把安装包丢到linux:/usr/local/ 3.解压安装Mycat 4.配置环境 5.使配置文件生效

  4. 11、SpringBoot------定时任务

      开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/52ef6c0c805913db1e66ed18671c322e ...

  5. Webpack4 学习笔记一初探Webpack

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 打包文件 支持JS模块化 模式: production(0配置默认), development(生产环境) 更详细的 ...

  6. Lucene检索提高性能的几个方式

    1.采用最新版本的Lucene 2.索引文件存储采用本地文件系统,如果需要挂载远程系统,请采用 readonly方式. 3.当然采用更好的硬件,更高I/O的磁盘 4.提高OS 缓存,调整参数 5.提高 ...

  7. lintcode_177_把排序数组转换为高度最小的二叉搜索树

    把排序数组转换为高度最小的二叉搜索树   描述 笔记 数据 评测 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树. 注意事项 There may exist multiple vali ...

  8. Mybatis与Hibernate区别

    Mybatis与Hibernate区别 mybatis: 1. 入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美 ...

  9. XStream 工具类 [ XmlUtil ]

    pom.xml <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId> ...

  10. while循环,格式化输出,运算符

      1.while循环 1.while 基本机构: while 条件: 循环体 执行流程: 当条件成立时为真,执行循环体. 再次判断条件是否成立,如果成立再次执行. 当判断条件结果为假时,跳出循环,本 ...