主页 > imtoken苹果版 > 比特币UTXO 中本聪最伟大的创造UTXO
比特币UTXO 中本聪最伟大的创造UTXO
中本聪有三个天才般的创造,一个是区块链的设计比特币UTXO,一个是UTXO,一个是智能合约。 而这三项设计都极为天才,被斯坦福大学密码学与计算机安全教授丹博内评价为“极其出色”,“必将激发无穷无尽的创新”。
UTXO(未花费的交易输出)
那么UTXO到底是什么?
UTXO是一种前所未有的记账方式。
我们现在使用的计费方式是基于用户的。
UTXO 代表未花费的交易输出。
在比特币社区中,Transaction简称为TX,所以上面的短语简称为UTXO。 一般认为UTXO是比特币区块链设计的一部分,但实际上UTXO与区块链没有必然联系。 您可以在不使用 UTXO 的情况下完全复制比特币区块链。
HyperLedger和Ethereum一开始并没有采用UTXO,现在前者已经切换回UTXO,而后者有意加入这个选项。 我想这也是中本聪擅长的地方——后来者抄袭,中间想做一些小的改进,后来做了之后,发现原来的版本还是很高的,又改回来了相继...
那么UTXO到底是什么?
前不久听了《卓老板谈技术》的插曲《比特币》,讲的是比特币的支付流程。 他说他要付给他奶茶妹妹5个比特币,于是系统从他的账户里扣了5个比特币。 ,给奶茶姐姐的账户加5,然后把这笔交易记入区块链账本,完成。 这部剧虽然拍的不错,但是在这一点上,卓总却完全看错了。 他描述的是一种基于账户的方案,而不是比特币实际采用的UTXO方案。
如果要设计一个支付系统,我们肯定会想到和卓老板一起,给张三一个余额为100元的账户,给李四一个余额为50元的账户。 当张三要付给李四20块钱时,进行如下操作:
1、查看张三账户余额是否充足比特币UTXO,如果不足20元,交易将终止,张三会报“余额不足”
2、从张三的账户中扣除20元(假设手续费为零)
3.给李四的账户充值20元
无论是银行、信用卡、证券交易系统,还是互联网第三方支付系统,其核心都是基于账户(account based)设计,以关系数据库为支撑。
数据库必须保证两点。 首先是要保证商业规则的遵守,张三要有足够的余额。 二是保证事务性,即原子性、一致性、隔离性和持久性(ACID)。 这些都是数据库的常识性知识,这里就不赘述了。 这种基于账户的设计简单直观,在IT系统设计中已经使用了几十年,应该说是没有问题的。
但是比特币并不是设计成基于账户的系统,而是发明了 UTXO 方案。
我们假设这样一个场景:张三挖出了12.5个比特币。 几天后,他将其中的2.5付给了李四。 几天后,他和李四各出资2.5个比特币凑成5个比特币支付给王五。
如果是基于账号的设计,张、李、王在数据库中各有一个账号,三人的账号变化如下图所示:
但是在比特币中,这个过程是通过UTXO实现的,如下图:
每笔交易的输出作为下一笔交易的输入。
只有看懂了上面这句话和上面的交易图,才能看懂UTXO(多看几遍,注意交易号,项目数,行的连接)
你可能会疑惑,一个接一个,那么第一个是怎么来的,当然是挖矿来的。
比特币交易遵循几条规则。
首先,除了coinbase交易(其他数字货币与比特币交易),所有的资金来源都必须来自之前一笔或几笔交易的UTXO,就像水管一样,一个接一个,一个出去一个进去,一进一出,生生不息,资金在交易之间流动。
其次,任何一笔交易中交易输入的总量必须等于交易输出的总量,等式两边必须平衡。
那么,在UTXO方案中,怎么知道一个钱包地址有多少钱呢?
注意,我上面说的是地址而不是人,因为一个人可以有多个地址,而区块链的匿名性决定了无法知道地址对应的是谁。 那么UTXO方案在查看账户余额的时候当然也需要一个数据库,它记录了当前系统中每一笔“还未花费的交易输出”,也就是比特币。
UTXO有什么优势? 传统的关系账户数据库会随着交易量的增加而无限膨胀,而UTXO数据库会小很多。