美文网首页
反常识的UTXO

反常识的UTXO

作者: 728306dbc561 | 来源:发表于2019-02-10 19:35 被阅读37次

    理解UTXO是什么并不难,难在理解为什么比特币要用UTXO。

    1、什么是UTXO

    UTXO是“未花费的交易输出”。
    发生地震了,好心人自愿将比特币打到一个救灾账户里。救灾账户是新建账户,里面没有比特币。收到五位好心人的捐款,分别是1、3、4、5、7个,现在账户里一共有20个比特币。
    在比特币系统中,并没有“20”这个数字,只有五笔交易记录:(好心人A给了救灾账户1个比特币),(好心人B给了救灾账户3个比特币),(好心人C给了救灾账户4个比特币),(好心人D给了救灾账户5个比特币),(好心人E给了救灾账户7个比特币)。这1、3、4、5、7就是UTXO。
    救灾账户给灾民购买帐篷,花费3.5个比特币。比特币系统销毁了救灾账户里的1和3,产生新的UTXO为0.5和3.5,将3.5打进帐篷商人账户,将0.5打进救灾账户。
    此刻,救灾账户里的余额是16.5,不过比特币系统中还是没有“16.5“这个数据,这个数据只能通过另外的系统提供,比如钱包。如果查询救灾账户余额,将按照同时满足两个条件筛选出交易记录:1、所有交易输出地址为救灾账户的UTXO;2、该UTXO没有被销毁,是可用的。这样筛选出救灾账户里的UTXO为0.5,4,5,7。钱包计算出0.5+4+5+7=16.5,并告诉你结果。你看到的16.5这个数据,跟比特币系统本身并无关系。
    然后,救灾账户给灾民购买食品,花费16.5个比特币。比特币系统销毁了救灾账户里的0.5,4,5,7,产生新的UTXO为16.5和0,将16.5打进食品商人账户,将0打进救灾账户。
    小结:比特币没有”余额“的概念,只有UTXO。每一笔UTXO跟账户关联,具有唯一的身份标识。UTXO一旦生成,不可分割。
    (注:1、为了便于理解,上述“账户”准确的说应该是“地址”。2、省略了交易费。)

    2、为什么比特币要用UTXO,而不用余额

    UTXO的设计反常识,有人专门研究了比特币多版本的软件代码,希望发现从余额转变为UTXO的蛛丝马迹,推论出中本聪设计UTXO的理由。结果发现从最初版本就是UTXO。中本聪也没有解释过为什么这么设计,人们只能猜测。
    (1)克服数据库无限膨胀。银行可以限定一个人最多有几个账户,从而控制账户数量。去中心化的比特币系统,理论上可以有无限多个账户地址。余额模式需要检索所有的账户,那么随着时间推移,比特币系统将会越来越臃肿,以至于数据同步很费劲、耗时长。
    换作UTXO,回到上面的例子,救灾账户购买帐篷时候,比特币系统只需要检索跟救灾账户有关的UTXO,而无需检索其他账户,这样数据检索和同步很快。
    (2)克服双花。余额模式下,只检索救灾账户为啥不行?
    有两个人在两台电脑上同时操作救灾账户,同时花费20个比特币购买帐篷和食品(双花)。
    卖家得检查买家账户上是否有足够的余额:
    帐篷商人一查救灾账户上有20个比特币,OK发货。
    食品商人一查救灾账户上有20个比特币,OK发货。
    比特币花费的时间有先后,但是因为去中心化系统里所有节点达成共识需要较长时间,等到共识达成,食品商人才发现自己被双花了,货发了没收到钱。
    换作UTXO,检查的是UTXO是否可用,而不是UTXO的总和(余额)。UTXO的所属权毫不含糊,让双花无机可乘。
    (3)实现并发。去中心化的缺点是降低了交易效率,如果余额模式下同时发生(好心人A给了救灾账户1个比特币),(好心人B给了救灾账户3个比特币),救灾账户需要完成余额增加1个比特币之后,才能启动下一次交易,而不能同时进行。
    换作UTXO,不管多少好心人同时往救灾账户里捐比特币,都是一笔笔独立的UTXO,系统无需计算余额,实现并发。
    小结:UTXO的反常识设计,是去中心化价值交换的需要,把它放到整个系统中理解,而无法单独理解。

    PS:
    1、比特币的精妙设计,让看不懂它的人望而生畏或排斥,让看懂它的人拍案叫绝。笑来老师当年反复看比特币白皮书,看懂之后激动不已。V神闭关三个月研究比特币,受启发发明了以太坊。加州大学金融学教授 Bhagwan Chowdhry提名中本聪应该获得诺贝尔经济学奖,”我无法把这个想法从我的脑海中驱逐出去“。
    2、认识亦或不认识新技术,把人群划成两半。每次技术革命都会扩大人们之间的收入差距,因为财富是认知的附属品。

    相关文章

      网友评论

          本文标题:反常识的UTXO

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