一文读懂比特币UXTO,TA其实没那么神秘!

简介:

本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网与信通院联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,雷锋网与信通院相关平台同步更新,敬请关注!

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

比特币作为一个优秀的、目前最成功的区块链系统,非常值得我们研究和学习。通过前面的文章,相信大家已经知道比特币就是一个大家一起维护的账本了。那么,这个账本具体是怎样工作的呢?

一般来说,需要有账户,我们才能开始记账

比特币使用了一种叫做UXTO的模式代替传统的账户。UXTO是Unspent Transaction Output的缩写,是比特币发明人”中本聪“的天才设计。本质上,UXTO就是流水账。了解过一点点会计学,见过企业记账的同学都知道,我们现在的会计系统绝大部分采用的是一种叫做”借贷记账法“的方法,账目分成借方和贷方,每发生一笔业务都要登记两个以上的科目。

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

简单来说,Alice转账给Bob 1美元,使用借贷记账法至少要产生两条账目,Alice账户减少1美元,Bob账户增加1美元。这种记账法在企业经营、企业审计中有无数的好处,这里就不详述了。但是这种记账法也有一个最大的缺点,就是容易产生记账错误和记账误差。一笔交易需要登记两条以上的账目,本质上记录的是“交易的结果”,而不是“交易本身”。

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

如果让一个程序员来设计基于“借贷记账法”的账本,数据库中记录的就是每一个账户的变动情况和余额。在数据库系统中,需要一系列额外的规则,来确保交易成功地进行。在Alice给Bob转账1美元的操作中,系统首先需要检查Alice账户余额是否大于等于1美元,然后检查Bob的账户地址是否合法,最后才是Alice账户减1,Bob账户加1。

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

上述过程是不是非常复杂?其实会计的工作之所以那么忙,就是因为他们每天都要把交易拆分成不同的科目去记录。不同的会计对交易理解不同,可能记录的科目就不一样(当然在简单的转账系统中,不存在这个问题),于是产生了记账差异。

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

“中本聪”没有采用这种复杂的记账方案,而是采用了一种追踪比特币的流水账记录法——UXTO。本质上,就是只记录交易本身,而不记录交易的结果。从金融系统设计角度来说,这种方式有点“交易清算分离”的意思。区块链系统只处理所有的交易,而需要清算、查看余额等信息,由区块链节点自行处理。

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

讲一个故事来理解一下UXTO:淘金者Tom挖到了一块黄金,重量是100克,于是首先记录了一条挖矿记录,有100克黄金进入了Tom的口袋。然后Tom把这块黄金送给了Alice,于是系统记录了一条交易----有100克黄金从Tom的口袋转移到了Alice的口袋。后来Alice又把黄金切成了两半,卖给了Bob和Charlie,于是系统又记录了一条交易----有100克黄金从Alice口袋里转出,分别转给了Bob 50克和Charlie 50克。上面的记录看上去就是像下面这个表格:

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!

用程序员最熟悉的树结构来描述可能更清楚:
 
区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘!每一个根节点都是一个CoinBase(挖矿交易),也就是每一枚比特币的最初来源。继而随着交易的变动,这棵树不断的生长,每个叶子节点就是一个UXTO----Unspent Transaction Output----未花费过的交易输出。严格来说,比特币系统并不是一个树结构,而是一个单向图。伴随着交易的复杂程度,中间树枝会有不断的交错,但是不妨碍我们利用树结构来理解它。

区块链研习 | 一文读懂比特币UXTO,TA其实没那么神秘! 

比特币的UXTO系统遵守两个规则:

  • 1、 除了 CoinBase(挖矿交易)之外,所有的资金来源都必须来自前面某一个或者几个交易的UXTO;

  • 2、任何一笔交易的输入总量必须等于输出总量,等式两边必须配平。
    这样记录交易是不是简单多了?规则越少,系统就越不容易出问题。比特币运行了这么多年,这方面经受住了时间的检验。

UXTO模式最大的好处就是,它忠实地记录了交易。我们的现实世界是随着时间流动的,交易一笔一笔地发生,比特币的区块链系统一笔一笔忠实地记录着这个世界发生的事情,不能回滚,不能删除。只要交易记录准确了、清楚了,那么每个人进行清算的结果就都不会出错。

因此,“交易”是比特币区块链系统的核心,“记录交易”是区块链系统的设计原则,也是区块链设计思想的核心之一。



本文作者:敖萌
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
5月前
|
SQL 安全 算法
BugKu CTF(Crypto):[+-<>] & 把猪困在猪圈里 & 你喜欢下棋吗 & 小山丘的秘密
BugKu CTF(Crypto):[+-<>] & 把猪困在猪圈里 & 你喜欢下棋吗 & 小山丘的秘密
|
存储 小程序 数据库
给ta打造一款专属的情侣小程序
给ta打造一款专属的情侣小程序
74 0
每日一题---383. 赎金信[力扣][Go]
每日一题---383. 赎金信[力扣][Go]
每日一题---383. 赎金信[力扣][Go]
|
Rust 算法 NoSQL
【密码学】一文读懂MT19937
瞄了一眼redis的源码,然后发现里面好玩的东西还挺多的,本文来聊一聊redis当中用到的一个随机数生成算法 mt19937,具体源码参见文末的参考资料,在这里就不贴到文本当中了。对于redis源码里面用的是mt19937-64本文先来看一下32位的版本,对于64位的版本,只不过状态当中元素用的是64位的元素,整个运算过程框架是类似的。 「梅森旋转算法」(「Mersenne twister」)是一个伪随机数生成算法,由松本真和西村拓士在1997年提出来的,可以快速产生高质量的伪随机数,修正了古典随机数生成算法当中的很多缺陷。19937这个名字来源于周期长度为梅森素数 。
1699 0
【密码学】一文读懂MT19937
|
Rust 算法 安全
【密码学】一文读懂MurMurHash第一版
我来填坑了,之前说来讲一下MurMurHash算法,然后本文来简单描述一下这个算法的主要过程。MurMurHash这个哈希算法在2011年3月1日第一版被提出来,第一版呢最终输出的是一个32bit的哈希值,第一版已经不推荐使用了,本文先来讲一下第一版的算法过程,由于我只找到了这个第一版算法的代码,没有找到对应的参考文献,所以本文的算法流程是我根据Google提供的代码来说的,有哪里说的不对的地方,也欢迎读者指正。
【密码学】一文读懂MurMurHash第一版
|
机器学习/深度学习 算法 程序员
五分钟知识科普:什么是 RSA 算法 | 算法必看系列二十八
RSA 的安全性依赖于大数分解,因此 RSA 算法加密安全性较高。但是,RSA 算法为保证安全性,会大大提升密钥长度,导致运算速度变慢。这导致它在大量数据加密时并不适用。
五分钟知识科普:什么是 RSA 算法 | 算法必看系列二十八
|
区块链 数据安全/隐私保护
比特币原理简介
一 什么是比特币 比特币(BTC)是基于区块链技术一种数字货币实现。 比特币网络是一个分布式的点对点网络,网络中的矿工通过挖矿来完成对交易记录。区块链网络提供了一个公共可见的记账本,任何人任何时候都可以查看此账本的信息。
3872 0
|
存储 分布式计算 安全
如何用“云”读懂女生的心?TA 做到了
曾经这首风靡一时的歌非常生动地描述女生的细腻敏感,现在有一家最懂女生的APP,就像闺蜜一样懂你知你,每天坚持不懈陪着你。TA就是美柚。
1979 0
|
程序员 区块链 数据安全/隐私保护
[写给程序员的]比特币科普文
区块链是目前技术热点之一,有人将它与互联网媲美,也有人声称区块链没有未来。确定的是在大多数人对区块链的理解仍停留在比特币等加密数字货币概念的时候,已经有公司和个人尝试将其应用于其它领域。若要对一个事物作出合理评价,较深入的了解必不可少,而了解的较快方式是从某个具体应用入手。
1400 0

热门文章

最新文章

下一篇
开通oss服务