美文网首页区块链学习笔记区块链研习社金马带你定投区块链
区块链学习笔记(3):深刻理解比特币交易 UTXO

区块链学习笔记(3):深刻理解比特币交易 UTXO

作者: angkee | 来源:发表于2018-01-30 16:31 被阅读146次

    本文由币乎(bihu.com)优质内容计划支持

    最初对于比特币交易的理解,仅限于使用比特币买卖某商品,买家账户余额-1,而卖家账户余额+1,直到了解了 UTXO。

    UTXO (Unspent Transaction Output),译为中文的意思是未花费的输出。

    我们先来了解一下传统的支付系统,场景是这样的:张三要付给李四 10 块钱,基本流程是这样的:

    1. 检查张三账户余额是否有 10 块钱,如果没有终止交易
    2. 如果存在 10 块钱,张三账户减去10元
    3. 李四账户增加 10 块钱

    这个场景很容易理解,这也是现在的银行、电商交易系统的设计,由关系数据库支持,数据库要确保事务性、原子性、一致性等等,这种基于账户的设计,简单直观。

    而比特币没有设计成基于账户的系统,而是 UTXO。

    要理解 UTXO,我们假设一个这样的场景:张三挖到 12.5 枚比特币。过了几天,他把其中 2.5 枚支付给李四。又过了几天,他和李四各出资 2.5 比特币凑成 5 比特币付给王五。

    基于账户的设计,张、李、王三人在数据库中各有一个账户,账户余额变化如下:

    账户余额变化

    而通过 UTXO 实现如下图:

    UTXO

    图片来源见水印,侵删。

    初次看到这两张图片的时候,感觉 UTXO 和基于账户这两种方案没什么区别,但是,但是,不要只是盯着账户余额看。看这两张图片的不同之处,直觉是“少了一个交易步骤”。

    这就要说一说 UTXO 设计的高明之处了,为什么要这么设计呢?

    传统的关系型数据库的一笔交易,需要登记两条以上的账目,本质上记录的是“交易的结果”,而不是“交易本身”。

    而 UTXO,本质上,就是只记录交易本身,而不记录交易的结果,从金融系统设计角度来说,这种方式有点“交易清算分离”的意思。

    UTXO 系统遵守两个规则:

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

    2. 任何一笔交易的输入总量必须等于输出总量,等式两边必须配平。

    UTXO 模式最大的优势就是,忠实地记录了交易,只要交易记录清晰准确,那么每个人进行清算的结果就都不会出错。

    对于 UTXO,是区块链设计思想的核心之一,本文建议你只字不差的阅读,即使我是一位程序员,对于概念,理解上也是花费了较多时间。

    相关文章

      网友评论

      • Eva旭旭:感谢战友分享,确实有些难懂,又百度了一下,了解如下:utxo是比特币交易的基本单位,每个比特币的节点都会存储当前整个区块链上的UTXO,整个网络上的节点通过UTXO及签名算法来验证新交易的合法性。

      本文标题:区块链学习笔记(3):深刻理解比特币交易 UTXO

      本文链接:https://www.haomeiwen.com/subject/fspczxtx.html