OK科普 | 比特币的另一个名字:UTXO
最近,笑来老师又转发了一条微博。众所周知,咱们李笑来老师是一个十分要面子的人,之前说过转行,那就肯定会做到。哪怕仅仅是从币圈转行到链圈,哪怕这就跟杨洋说:“我它喵的,再演烂剧,名字倒过来念”是一个性质的事情。但不可否认的是,笑来老师转发的微博,还真是区块链技术中,一个极具突破性的事情。
这条微博的内容是这样的:一个高效,但超级节省空间的UTXO验证方案(可以实现存在验证和排除验证),昨天由斯坦福Benedikt提出。简单来说呢,就是提出了一个超级节省内存空间的方案,比如如何将你硬盘中150G的小黄片.....不,是学习文件夹,压缩成1个G。有没有很伟大?解决了我们男性同胞非常重要的一个痛点。这样的一个方案很好理解,但问题在于,这个UTXO是什么鬼?下面将由情报局为大家科普一下,UTXO这点事。
UTXO(Unspent Transaction Output)即为未消费交易输出的意思。在比特币中类似于以太坊中的账户模型。 在比特币中,一笔交易的每一条输入和输出实际上都是UTXO,输入UTXO 就是以前交易剩下的, 更准确的说是以前交易的输出UTXO。这是比较官方的一个说法。
简单来说,我们都知道比特币是虚拟的,本质上就是一串代码。而记录比特币交易的账户模型,就是UTXO。它记录了,包括你账户交易了多少比特币,两者的交易地址,资金来源,数额等等。所以本质上说,确实没有什么比特币,有的只是记录的一个个UTXO。
举个例子,假如我们现在钱包里有100块钱,你要花5块钱,然后找零95块。当你拿出来100块大洋花出去的时候,这100块就已经不能再算作UTXO,只有找零得到的95块,才会算做UTXO。所以,比特币使用前后所链接的公链,记录所有交易记录,当之前的 UTXO 出现在后续交易的输入时,就表示这个 UTXO 已经花费掉了,不再是 UTXO 了。不过整个新的交易,会记录在新的区块上,没有改变历史区块的数据。
另外还要提一下,UTXO与传统的账户系统有什么区别。假如有两个人,一个是小明,一个是小美。小明要给小美转100块钱。那么传统的账户模型是这样的:先判断小明账户里是否有100块的余额,然后在小明的账户里减少100块,在小美账户里增加100块。
但UTXO的机制是这样的:小明的账户里有200块钱,他要想给小美转账,必须将200块钱全部消耗掉。所以他不仅要给小美转100块,还要给自己账户转100块。这样一个好处就是,如果从第一个区块开始逐步计算所有比特币地址中的余额,就可以计算出不同时间的各个比特币账户的余额了。
那在了解UTXO之后,我们就明白了,为什么这条提案这么重要。因为不管是想要挖矿的,还是想要做开发的,你都需要面对比特币客户端那茫茫多的UTXO集,具体要占160G的空间。想一想,如果你下载一部电影需要160G,那你还会看吗?所以对于比特币的Dapp开发来说,只有两个选择,要么你下载个三天三夜,要么你下个简约版的,之后面对要啥功能啥没有的尴尬局面。
不过斯坦福现在却站出来表示,我们这个提案,可以通过一项名为“RSA累加器”的技术,来替代现有的UTXO验证方案,从而用只有1.5KB大的区块,就可以证明所有的UTXO集是否可以满足交易的条件。也就是说用一个1.5KB的东西,就可以替代160G的整个UTXO。这简直就是区块链开发者的福音啊!!!
如果这个提案真的具备可行性,确实是有可能成为快速推动行业发展的一个大助力。虽然目前来看,区块链距离我们的生活依然很遥远,不过随着如斯坦福这类正规机构的努力,与各种应用项目的落地,相信区块链改变世界,终是一个必然事件,剩下的,让我们拭目以待吧~