在比特币社区内,有一种这样的说法:其实并没有比特币,有的只是UTXO。还有一种说法是:如果理解了UTXO,你就理解了比特币。

这两种说法虽然都有不同程度的夸张,但足以体现UTXO之于比特币的重要性。既然UTXO这么重要,今天我们就来简单介绍一下UTXO。

什么是UTXO

在当前的区块链项目中,主要有两种记录保存方式,一种是账户/余额模型,一种是UTXO模型。比特币采用就是UTXO模型,以太坊、EOS等则采用的是账户/余额模型。

UTXO是 Unspent Transaction Output的缩写,意思是未花费的输出,可以简单理解为还没有用掉的收款。比如韩梅梅收到一笔比特币,她没有用掉,这笔比特币对她来说就是一个UTXO。

账户/余额模型和UTXO模型

账户/余额模型生活中很常见,比如我们的银行账户、微信账户,都是基于账户/余额模型。

账户内的余额是作为一个整体存在的。李雷账户上有多少钱,看一下余额便知道,在发生交易时,变动的是余额。比如,情人节当天,李雷通过微信给韩梅梅转520元,李雷微信账户余额会减掉520元,而韩梅梅账户余额会增加520元。

UTXO模型则不同于账户模型。李雷有多少比特币,要对他比特币地址所有UTXO求和才知道。简单来说,UTXO模型就像我们用的钱包,而钱包里的每张纸币或每枚硬币都是一个单独的UTXO,因此钱包里有多少钱,并不一目了然,需要把所有纸币和硬币面额相加才能得出。

而每一次收付款,是以UTXO为单位消耗或者接收的。比如我们用10元钱买5元早餐时,这个10元作为一个UTXO先整体付给卖家,卖家再找零给你。

我们通过一个例子来说明。

情人节当天,李雷给韩梅梅买花,价格520元。用现金支付,他掏出6张百元大钞(相当于6个100元的UTXO)给卖家,卖家需要给李雷找零80元(50元、20元和10元纸币各一张)。这个过程中显而易见,李雷花600元买花,得到80元找零,卖家卖出花,得到520元。

从UTXO的角度看,李雷花掉了6个UTXO(6张100元),得到3个UTXO(3张找零);卖家得到6UTXO,找零时花掉了3个UTXO。

如果用比特币完成这笔交易,过程就会稍有不同,假设李雷用6个均为1btc的UTXO付给卖家5.2BTC,最后卖家得到一个价值5.2BTC的UTXO,找零给李雷是一个价值0.8BTC的UTXO,换句话说6个UTXO被“销毁”,变成了两个新的UTXO。(两者不同的原因在于,纸币面额的种类有限,而比特币不受这个限制)。

如果李雷和韩梅梅秀恩爱的过程发生在比特币网络上,转账过程是怎样的?

李雷挖矿得到系统奖励的12.5枚比特币,于是李雷比特币地址上就有一个12.5BTC的UTXO。

李雷要转5.2BTC给韩梅梅,12.5BTC的UTXO将会被整体花掉,其中5.2BTC 转给韩梅梅,剩下的7.3BTC找零给自己(为方便讨论,此处忽略矿工费)。换句话说,之前12.5BTC是以一个UTXO的形式整体存在的,在进行转账时,这个UTXO被“销毁”了,不存在了,变成了两个新的UTXO:一个属于韩梅梅,这个UTXO价值5.2BTC,另一个属于李雷,这个UTXO价值7.3BTC,这是找零给李雷的。

两种模型在转账时的对比

UTXO 核心设计思路是:它记录交易事件,而不记录最终状态。要计算某个用户有多少比特币,就要对其钱包里所有的UTXO求和,得到结果就是他的持币数量。UTXO模型在转账交易时,是以UTXO为单位的,也就是说在支付时,调用的是整数倍UTXO,比如1个UTXO,3个UTXO,没有0.5个UTXO的说法。

utxo模型_什么是UTXO?简析账户/余额模型和UTXO模型相关推荐

  1. lr模型和dnn模型_建立ML或DNN模型的技巧

    lr模型和dnn模型 机器学习 (Machine Learning) Everyone can fit data into any model machine learning or deep lea ...

  2. 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型

    文章目录 CBOW 模型 基本结构 目标函数 梯度计算 Skip-gram 模型 基本结构 梯度计算 优缺点分析 系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 ...

  3. ologit模型与logit_Logit模型和Logistic模型有什么区别?

    之前在<Logit究竟是个啥?--离散选择模型之三>一文中提过,Logit应该理解成Log-it,这里的it指的是Odds("胜率",等于P/1-P).一个Logit变 ...

  4. 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现

    情感分析的描述.基于词袋模型和word2vec模型的情感分析实现 以购物评论为例: # 读入原始数据集 import pandas as pddfpos = pd.read_excel('../dat ...

  5. R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能

    R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录

  6. 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型

    系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 [word2vec]篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模 ...

  7. 基于 OData 模型和 JSON 模型的 SAP UI5 表格控件行项目的添加和删除实现

    这是 Jerry 2021 年的第 62 篇文章,也是汪子熙公众号总共第 339 篇原创文章. 龟虽寿曹操神龟虽寿,犹有竟时:腾蛇乘雾,终为土灰.老骥伏枥,志在千里:烈士暮年,壮心不已.盈缩之期,不但 ...

  8. 「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型

    Walston-Felix模型和COCOMO Ⅱ模型 序言 一.Walston-Felix模型 1. 公式 2. 举例 二.COCOMO模型(Constructive Cost Model) 1. 模 ...

  9. Reactor模型和Proactor模型:同步IO与异步IO

    Table of Contents 服务端的线程模型 2种fd 3种事件 Reactor模型-同步I/O 1.单Reactor单线程模型 2.单Reactor多线程模型 3.主从Reactor多线程模 ...

最新文章

  1. python更新pip失败-解决Python pip 自动更新升级失败的问题
  2. 陕西省铜川市计算机学校,铜川市计算机专业学校怎么样?好不好?
  3. centos7不识别固态硬盘_固态硬盘分区与不分区哪个好【详细介绍】
  4. 重命名Jakarta EE的Java EE规范
  5. fisher-yates_使用Fisher-Yates随机播放算法以O(n)时间随机播放给定数组
  6. qlabel可以选中吗_惊现凡尔赛式排版!原来微信公众号排版样式还可以“变装”?...
  7. [*转*] 开发B2C电子商务系统(ASP.NET)--多年前的老文章
  8. zookeeper系列(三)zookeeper的使用--开源客户端
  9. 软件工程(英文版 第8版)
  10. 斯坦福大学CS224N-深度学习与自然语言处理:课程1-笔记
  11. 逻辑回归算法及其实现
  12. Android Verified Boot dm-verity 优化和实战2
  13. 51单片机串口中断功能的设置
  14. mock gps android,Mock GPS with joystick
  15. vue+ elementui合并单元格后 checkbox多选单选取值问题
  16. Jenkins邮件通知模板(Git修改版)
  17. 深度学习之语义分割unet算法解读
  18. 创基MIFI多功能分线器实现随时随地上网需求
  19. C语言程序设计教程(第三版)李凤霞 第一章课后习题答案
  20. 《风投出50万买断她网站广告位却被拒绝》

热门文章

  1. java数据结构编程_Java数据结构编程
  2. 科大星云诗社动态20201206
  3. matlab等待按键响应,matlab中figure对象的按键响应
  4. 云炬随笔20211001
  5. 云炬随笔20190301
  6. 手动配置WCF宿主的.config文件遇到的几种错误
  7. C++库文件导出可见性
  8. socket使用多进程实现并发的服务器
  9. mysql delimiter 作用
  10. 计算机与外部设备通讯的接口,总线接口与计算机通信(四)USB外部总线(初级认识)...