令人眼花缭乱的区块链名词之:UTXO

2023-10-26

目录

1.交易

2.UTXO


 hello,大家好,我们第六期的区块链技术分享来啦~~本期分享的主题是UTXO(Unspent Transaction output),未花费的交易输出

在比特币系统中,每个全节点都会记录UTXO。要理解UTXO模式,首先要清楚:比特币采用的是基于交易的账本模式也就是transaction-based Ledger。怎么理解?

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

因此,在比特币网络中核心是:交易。交易将价值从交易输入转移到交易输出。交易输入是价值的来源,通常是上一笔交易的输出。

图片

为了深入理解UTXO,下面我们先举例说明比特币上的交易。


1.交易

简单来说,一个比特币交易,就是告诉网络,某个拥有一定数量比特币的用户已经授权将这笔比特币转让给另一位用户。新的所有者可以通过另外一笔授权转让交易来使用这些比特币,以此类推,形成一个所有者转换的链条。

图片

每个区块链网络都是一个分布式账本,交易就像复式账本的一笔笔记录,每个交易均包含一到多条的“输入”——这是比特币账户的借方。每笔交易也包含了一到多条的“输出”——这是比特币账户的贷方。

这里扩展解释一下记账相关的知识点:

人类社会发明的记账技术先后有四种

(1)早在原始社会时,人类发明了“结绳记账”;

(2)农业社会时发明了“记流水账”;

(3)工业社会时发明了“复式记账”,复式记账的平衡表使账目一目了然,适应了工业社会的企业管理,但它避免不了经理人与会计可能从原始数据源头造假。

(4)区块链是一个分布式账本,分布式账本是一种在网络成员之间共享、复制和同步的数据库。

图片

复式记账法的记账规则是:“有借必有贷,借贷必相等。”使用“借”与“贷”两个记账符号,而这两个记账符号没有实际意义。借助记账符号将同一笔交易或事项以相同的金额记录在两个以上会计科目中,这样的记账方法有助于我们弄清楚交易和事项的来龙去脉。

输入和输出(借和贷)加起来不要求相等。实际上,输出加起来的和应稍小于输入的和,这个差额就是隐含的“交易费用”,这笔小额费用归那些将交易归集到账本的矿工所有。(下图中的交易费用就是小费)

如下图所示,爱丽丝支付给鲍勃的交易使用了上一笔交易的输出,作为这笔交易的输入,输出则包含两部分,一部分给Bob(0.0150BTC),另一部分用于找零(0.0845BTC)。交易形成了一个链条,最新交易的输入对应上一笔交易的输出。

爱丽丝的私钥密钥提供的签名解锁了前笔交易的输出,向比特币网络证明了她对这些资金的所有权。她在交易中附上鲍勃的地址,形成一个“限制”,限制鲍勃必须使用私钥签名才能花费这笔资金。这个过程展示了价值在爱丽丝和鲍勃之间转移的过程。

图片

交易输出将一笔与私钥关联的价值赋予一个新用户。目标密钥称为安全锁。在未来的交易中,需要通过签名来获取这笔资金

如果每一笔输入都要关联上一笔输出,那么在比特币网络中到底是先有输入还是先有输出?

图片

这个问题是有标准答案的:先有输出。

在比特币里面有一类特殊交易叫铸币交易,也是比特币网络发新币的方式。

铸币交易并不需要消耗(花费)。实际上,它只有一个输入,叫做币基(coinbase),这个交易从无到有生成了比特币。铸币交易有一个输出,支付到矿工的比特币地址。

图片

图片

上图中,铸币交易的输出将25.09094928比特币发送到矿工的比特币地址,地址是1MxTkeEP2PmHSMze5tUZ1hAV3YTKu2Gh1N。


2.UTXO

从前面的分析来看,交易的输入方在转账之前,先要用私钥签名,表示自己对这笔钱的所有权,也就是这笔钱还未被消费。

图片

比特币全节点跟踪所有可用和可消费的输出,称为“未花费的交易输出”(unspent transaction outputs),即UTXO,所有UTXO的集合被称为UTXO集。

UTXO集大小在新的UTXO增加时而增长,并在UTXO被消耗时而缩小。每一个交易都代表UTXO集中的变化(状态转换)。

怎么理解呢?假设Alice向Bob转账8比特币,那么转账步骤如下:

1) 假设Alice之前通过挖矿获得了 10 个比特币,在她的地址中,这些比特币是某个币基交易的 UTXO。

2) Alice 发起一个交易,输入是自己的上一个交易,输出有两个:一个是 Bob 的地址,数量是 8个比特币;另一个自己的地址,数量是2比特币,Alice 用自己的私钥对交易进行签名。

比特币交易还要遵循一个原则:每一次交易的输入值都必须全部花掉,不能只花掉部分。你有一个价值20比特币的UTXO并且想支付1比特币,那么你的交易必须消耗掉整个20比特币的UTXO,并产生两个输出(UTXO):一个支付了1比特币给接收人,另一个支付了19比特币的找零到你的钱包。由于UTXO的不可分割特性,大部分比特币交易都会产生找零。

3) 当交易被区块链确认后,Alice 的 UTXO 就变成了 2。而在Bob的地址中就多了一个 UTXO,数量是8。

比特币网络中UTXO的变化,如下图:

图片

因此在比特币系统中并不存在比特币,只有UTXO,每一笔比特币都源自上一个交易,是上一个交易的未花费的交易输出。

我们可以沿着这样的交易链条一直向上追溯。在源头,每一枚比特币都是通过挖矿被创造出来的,在每一笔比特币的源头是一种特殊的交易——比特币矿工因挖矿生成区块而获得奖励的币基交易(coinbase transaction

未使用的交易输出(UTXO)和我们熟悉的银行账户有着很大的不同。为什么要采用这样的设计?

图片

第一,UTXO设计易于确认比特币的所有权。

采用UTXO设计,要确认我拥有比特币,只要确认上一个交易我的确获得了它们即可。在比特币区块链中,一个区块经过6次确认后,其中的交易可被认为是真实无误的。因此,通常只要上一个交易是真实的,我就的确拥有这些比特币。

第二,UTXO设计与区块链账本是完全融为一体的。

银行账本与区块链账本都是一种所有权管理系统,

它的首要任务有两个:

一是记录某一时刻谁拥有什么;

二是通过转账交易把钱从一个人转给另一个人。

银行账本的记录方式是每一刻形成一个快照,把重心放在第一个任务上,也就是谁拥有什么;

UTXO的记录方式是把重心放在第二个任务上,然后反过来完成第一个任务,由转账交易来记录所有的所有权转移过程。

转账交易累积成的区块链账本可在某一刻来确认谁拥有什么,这一刻的记录也就是区块链的状态。

因此比特币的系统设计就是一个状态转换系统(statetransition system)。以太坊也是一个状态转换系统,区别于比特币transaction-based Ledger基于交易的模型以太坊是account-based Ledger基于账户的模型,以太坊也采用这种状态转换系统的设计,同时又对其进行了改进,主要是引入了智能合约,让对状态转换进行编程更方便。

今天的分享就这么多,大家周末愉快~~

图片

 


 

本文参考:

●《结构性改革:中国经济的问题与对策》

●《区块链:通往资产数字化之路》

●《区块链:技术驱动金融》

●《精通区块链编程》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

令人眼花缭乱的区块链名词之:UTXO 的相关文章

随机推荐

  • SpringCloud-微服务架构编码构建

    SpringCloud Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具 例如配置管理 服务发现 断路器 智能路由 微代理 控制总线 分布式系统的协调导致了样板模式 使用Spring Cloud开发人员可以快速
  • 010.CMake函数和宏(下)

    文章目录 函数和宏的根本区别 同名覆盖 总结 函数和宏的根本区别 函数和宏之间的一个根本区别 是函数引入了一个新的变量作用域 而宏没有 在函数内定义或修改的变量对函数外同名的变量没有影响 而宏与其调用者共享相同的变量范围 但是请注意 函数不
  • 我的第一个hbuilder项目,基于h5的五子棋游戏

    这是在老师的引导下完成小游戏 以下是今天学习的内容和知识分享 第一个游戏的操作思想 使用hbuilder软件 打开软件可在其帮助中 hbuilder入门 可以了解相应的软件使用方法 使用 菜鸟教程 网站 可在其中学习h5的相关知识 制作五子
  • 数据结构---堆排序

    堆排序 JAVA实现 和快速排序区别 二叉堆的构建 删除 调整是实现堆排序的基础 之前博客写了二叉堆 二叉堆 最大堆的堆顶是整个堆中的最大元素 最小堆的堆顶是整个堆中的最小元素 堆排序步骤 把无序数组构建成二叉堆 需要从小到大排序 则构建成
  • QT之模态

    模态 当一个窗口以模态显示 那么所有其他窗口的事件都被阻塞 停止运行 直到模态窗口关闭后才继续 MainWindow pMainWindow new MainWindow pMainWindow gt setWindowTitle QStr
  • Hbuilder X用不习惯?快来看看这些快捷键

    用惯了vscode Hbuilder X的使用也得熟练 快捷键如下 Ctrl N 新建文件 Ctrl W 关闭文件 Ctrl Shift W 关闭全部文件 Ctrl S 保存文件 Ctrl Shift S 保存全部文件 Alt 激活代码助手
  • C/C++的单元/集成测试工具 - VectorCAST/C++

    什么是VectorCAST C VectorCAST C 是一套集成的软件测试解决方案 能显著降低C C 测试过程中为达到安全性检测和嵌入式系统关键任务检测所必需的时间 工作量及成本 VectorCAST C 可自动实现 为单元测试和集成测
  • (USB系列三)stm32 CubeMX usb音频描述符详解 usb audio UAC

    如果需要麦克风阵列 回声消除 声源定位 波束成形 语音对话的产品请访问我好朋友的店铺 店铺链接 首页 智能语音开发者联盟 淘宝网 大家好我是人见人爱 花见花开的大魔王 usb协议还是很烦的 cube很大程度上减轻了工作量 但是不灵活是个大问
  • python xlrd主要功能

    This module is part of the xlrd package which is released under a BSD style licence Basically use function xlrd open wor
  • 信息学奥赛--进制转化

    学习目标 1 了解二进制及其他进制 2 十进制与R进制的转换 3 能编程实现进制之间的转换 学习内容 练习 一 任意进制转十进制 1 1101101 2 2 7754 8 3 F1B9AC 16 4 1011 11101 2 5 75 10
  • 开源BT磁力搜索引擎收集

    基本是利用bt网络中p2p技术实现 开源项目上实现了dht网络的搜索 是学习dht算法的好项目 https lanmaowz com open dht spider https github com dontcontactme p2pspi
  • NVIDIA Jetson TX2 解决奥比中光 Astra pro相机的ros 打不开深度信息/camera/depth/image

    背景 NVIDIA Jetson TX2 安装奥比中光 Astra pro相机的ROS 驱动后可以打开彩色相机 打不开深度信息 有点捉急 换了一台相机 还是如此 说明相机没问题驱动有问题 打开奥比中光的开发者论坛 Astra pro无法读取
  • SDN 中 DDoS 攻击问题(论文方法总结)

    SDN 中 DDoS 攻击类型 1 数据平面DDoS攻击 数据平面由多个启用OpenFlow的转发设备组成 这些设备被称为OpenFlow交换机 每个交换机都有一个有限的流表大小来存储规则和有限的处理能力来处理不匹配的数据包 因此 它成为缓
  • rancher部署flink集群

    rancher版本 v2 6 8 k8s版本 v1 22 13 rke2r1 flink集群版本 1 15 0 flink安装模式 session cluster 写在前面 因为参照官网的说明安装过程中出现了很多问题 特记录于此 避免后续重
  • 2020-6-19 Idea打包项目war并且发布到服务器

    打包的介绍 打包和上传到服务器的介绍
  • linux操作系统发行版_Linux操作系统和发行版

    linux操作系统发行版 Newcomers to Linux world generally confuse or no idea about distributions We call generally the operating s
  • ChatGPT能代替搜索引擎吗?ChatGPT和搜索引擎有什么区别?

    ChatGPT和搜索引擎是两种在信息获取和交流中常用的工具 ChatGPT是一种基于人工智能技术的聊天机器人 而搜索引擎是一种在互联网上搜索信息的工具 尽管它们都是依托互联网与信息获取和交流有关 部分功能重合 但在很多方面存在着明显的区别
  • JS逆向

    关注它 不迷路 本文章中所有内容仅供学习交流 不可用于任何商业用途和非法用途 否则后果自负 如有侵权 请联系作者立即删除 1 需求 最近美食群发了很多二维码 提取链接后 可以在移动端的浏览器上愉快的播放 然而 当我把 url 链接复制到 我
  • mac安装vue

    需要提前安装brew 安装方法 mac使用Homebrew安装node 1 安装node 上面链接已经详细介绍如何安装node 这里一笔带过 brew install nodejs node v 2 安装webpack cnpm insta
  • 令人眼花缭乱的区块链名词之:UTXO

    目录 1 交易 2 UTXO hello 大家好 我们第六期的区块链技术分享来啦 本期分享的主题是UTXO Unspent Transaction output 未花费的交易输出 在比特币系统中 每个全节点都会记录UTXO 要理解UTXO模