为了账号安全,请及时绑定邮箱和手机立即绑定

有关区块链的一些概念(UTXO和IPFS)

标签:
区块链

1.UTXO(Unspent Transaction Output)

UTXO(Unspent Transaction Output)即“未花费的交易输出”

在区块链中,每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。

例如有如下的交易过程:
1.张三挖矿得到了12.5个币
2.张三给李四2.5个币
3.张三和李四都转给王五2.5个币

传统的中心化的账户,会按照以下方式进行交易:
这里写图片描述
可能这种交易方式我们太熟悉了,以至于都说不出它有什么特点,但请注意,当张三给李四2.5个币的时候,是从张三余额中直接减去2.5,其中剩余的10个币不参与交易过程,这一点与区块链不同。

那么这个过程在区块链上如何表示呢?

这里写图片描述

比特币交易遵守几个规则:

第一,除了 coinbase 交易之外,所有的资金来源都必须来自前面某一个或者几个交易的 UTXO,就像接水管一样,一个接一个,此出彼入,此入彼出,生生不息,钱就在交易之间流动起来了。

第二,任何一笔交易的交易输入总量必须等于交易输出总量,等式两边必须配

上图第一个交易 #1001 号交易是 coinbase 交易。比特币是矿工挖出来的。当一个矿机费尽九牛二虎之力找到一个合格的区块之后,它就获得一个特权,能够创造一个 coinbase 交易,在其中放入一笔新钱,并且在交易输出的收款人地址一栏,堂堂正正的写上自己的地址。

这笔比特币的数额规定为 12.5 枚,市价 48,576元人民币。这个 coinbase 交易随着张三挖出来的区块被各个节点接受,经过六个确认以后永远的烙印在历史中。

过了几天,张三打算付 2.5 个比特币给李四,张三就发起一#2001号交易,这个交易的资金来源项写着“#1001(1)”,也就是 #1001 号交易——张三挖出矿的那个 coinbase 交易——的第一项 UTXO。然后在本交易的交易输出 UTXO 项中,把2.5个比特币的收款人地址设为李四的地址。

请注意,这一笔交易必须将前面产生那一项 12.5 个比特币的输出项全部消耗,而由于张三只打算付给李四 2.5 个比特币,为了要消耗剩下的10比特币,他只好把剩余的那 10 个比特币支付给自己,这样才能符合输入与输出配平的规则。

再过几天,张三和李四打算AA制合起来给王五付 5 枚比特币。那么张三或李四发起 #3001 号交易,在交易输入部分,有两个资金来源,分别是#2001(1) 和 #2001(2),代表第 #2001 号交易的第 (1) 和第 (2) 项 UTXO。然后在这个交易的输出部分里如法炮制,给王五5比特币,把张三剩下的 7.5 比特币发还给自己。以后王五若要再花他这5比特币,就必须在他的交易里注明资金的来源是 #3001(1)。

所以,其实并没有什么比特币,只有 UTXO。当我们说张三拥有 10 枚比特币的时候,我实际上是说,当前区块链账本中,有若干笔交易的 UTXO 项收款人写的是张三的地址,而这些 UTXO 项的数额总和是 10。因为在比特币系统里,一个人可以拥有的地址资源,可谓取之不尽用之不竭。要知道自己的一大堆地址里一共收了多少 UTXO,人是算不过来的,需要由比特币钱包代为跟踪计算。

2.IPFS(InterPlanetary File System)

IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。

  • 内容可寻址:通过文件内容生成唯一哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间

  • 版本化:可追溯文件修改历史

  • 点对点超媒体:P2P 保存各种各样类型的数据

可以把 IPFS 想象成所有文件数据是在同一个 BitTorrent 群并且通过同一个 Git 仓库存取。

总之,它集一些成功系统(分布式哈希表、BitTorrent、Git、自认证文件系统)的优势于一身,是一套很厉害的文件存取系统。

IPFS 使用场景

IPFS 的发明者 Juan Benet(juan@benet.ai)在 IPFS 技术白皮书中假设了一些使用场景:

  • 在 /ipfs 和 /ipns 下挂载全球文件系统

  • 挂载的个人同步文件夹,拥有版本功能

  • 文件加密,数据共享系统

  • 可用于所有软件的带版本的包管理器(已经实现了:https://github.com/whyrusleeping/gx

  • 可以作为虚机的根文件系统

  • 可以作为数据库:应用可以直接操作 Merkle DAG,拥有 IPFS 提供的版本化、缓存以及分布式特性

  • 可以做(加密)通讯平台

  • 各种类型的 CDN

  • 永久的 Web,不存在不能访问的链接

参考链接:
http://www.yopai.com/show-2-182646-1.html
https://blog.csdn.net/dl88250/article/details/78579080

原文出处

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消