AITD小课堂第十七课:UTXO

AITD粉丝团
AITD粉丝团 得得号

Dec 24, 2020 专注Blockchain技术研究和分享。

该文章已上链

摘要: 中本聪有三个天才般的创举,一个是区块链的设计,一个是UTXO,一个是智能合约。而这三个设计是极为天才的,被斯坦福大学密码学和计算机安全教授 Dan Boneh 评价为“extremely brilliant”,“必将激发无穷的创新”。

中本聪有三个天才般的创举,一个是区块链的设计,一个是UTXO,一个是智能合约。而这三个设计是极为天才的,被斯坦福大学密码学和计算机安全教授 Dan Boneh 评价为“extremely brilliant”,“必将激发无穷的创新”。

UTXO,即未花费的交易输出(Unspent transaction output),基于UTXO的模型与银行使用的账户余额模型完全不同。

BTC账户中的余额不会显示成一个总数,而是由区块链网络中所有与当前账户有关的UTXO所组成的。BTC的每一笔交易都由输入和输出两个部分组成,输入代表的是转入到你的BTC地址上的币,输出代表的是你转出的币,未花费的交易输出会作为下一笔交易的输入。

中本聪在比特币白皮书中做出如下规定:“如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。”

因为UTXO的这种特殊设计,转账BTC会生成两笔交易,一笔转给对方,一笔转给自己,俗称“找零”。

当我们在现实生活中进行资金交易的过程中,整个交易的流程往往是这样的,小黄得到了现金10元,转给小牛2元,那么小黄的账户在现有基础上减去2元,小牛的加上2元;小牛和小黄又分别转给小王1元,小牛和小黄的账户分别减去1元,在小王的账户上加上2元,整个交易过程如下图所示。



而在比特币交易中,我们是这样记账的。依然是刚才的流程,小黄通过挖矿获得了10比特币,他向小牛转了2比特币。后来小牛和小黄又各自向小王转了1比特币。整个交易流程如下图。



而三个人的比特钱包地址中只记录了这几笔交易的流水,并没有余额的概念,如下图。



每一个比特币交易都有若干个输入和输出组成,输入直白点讲就是你拿什么证明你能拿出这些比特币来给别人,那么这个证明就是前一个人给你的转帐记录。

小黄的比特币钱包地址中有两种交易类型,Coinbase是一种比较特殊的交易,是指小黄挖矿后的获得的奖励,这种交易实际上是没有输入只有输出的,输出的就是挖矿者小黄的比特币钱包地址,小黄此时要向小牛转2个比特币,那么输入就是小黄挖矿得来10比特币的这个交易,输出2个比特币给小牛,另外转8个比特币给自己。

输出的数量必须小于等于输入的数量,若没有把多余的比特币转回给自己,那么很可能会作为手续费奖励给记账的矿工。后续流程类似,小牛转给小王1比特币的输入是小牛从小黄那得到的2比特币。这样包含若干输入和输出得交易数据结构被称为UTXO即未花费的交易输出。数据库中有专门的表记录UTXO,一旦未花费得作为输入产生了其他输出,则输入交易就从UTXO表中删除。

那么中本聪为什么要采用UTXO而不是账户体系呢,一个比较直接的好处是交易可以并行处理,举个例子,在银行的账户体系下,如果你和你朋友都想操作某一个银行卡账户,这两笔交易在处理时有先有后。

例如,你想从账号里面转200块出来,而你朋友想向账户里存100元。在他操作存款的时候,你操作了转出200元,那么页面上你也许看着是操作成功,进入银行处理状态了,但是银行在真实处理这两笔交易时是有明确的先后顺序的,如果你朋友并不是存钱,而是将钱都取出来,那么过一会,你就会收到支付平台返回的操作失败的操作了,因为并没有足够的余额供你转出。而UTXO并不存在这样的问题,只要每笔钱都有来源,且来源是未被用过的,那么多少个操作同时向一个地址转帐,或者从同一个地址转出也是没关系的。

作者:AITD粉丝团;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 AITD粉丝团 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信