为什么我说智能合约不靠谱

好久没有写专栏了。

今天我在知乎和微博说,智能合约3年内能得到大规模应用,我直播吃土。那里篇幅有限,就在这儿写篇文章,描述一下为什么我做出这种判断,也是自己记录下来看看会不会被打脸,然后可以反思一下自己的思维模式。

我的结论是,区块链作为分布式账本有一些应用场景,但是不会太大范围的应用。智能合约则非常不靠谱,最多能在彩票、地下赌场有些半黑半白的应用。而那些币,除了黑市洗钱、违法交易以外没有任何价值。

区块链的宣传点不外乎分布式去中心化、公开透明可审计、安全不可篡改。所以当有大公司提供BaaS服务的时候,我第一反应就是挂羊头卖狗肉,按道理认为区块链是未来将重构一切的那些支持者,更应该出来反对,但是遗憾没有,他们把这些服务当做区块链是未来的依据。微软也好,IBM也好,他们提供的区块链服务让开发者开发,用户使用,这些账本存储在哪里?在这些互联网巨头的云数据中心里,在互联网的巨无霸手心里面,完完全全违背了去中心化的理念好么?

当有大公司宣称自己的业务运行在区块链上时,我有同样的反应。这些区块链节点有多少个?控制权在谁的手里?哦,全部在这些大公司的运维部么手里。我区你妈的块。

那么公有链是不是更靠谱?相比而言,就分布式去中心化和公开透明可审计方面要好很多,但是不够大的区块链很容易遭受计算力攻击。物联网设备这么发达,安全又是原始阶段,黑客控制的大规模pc加上物联网设备,达到几十万的规模不是难事,更不用说国家机关的超级计算机了,51%攻击?我看91%攻击都有可能,真的不可篡改不可撤销么?

有没有可能的区块链应用?联盟链也许是一个好主意。多加企业联合在一起,每家多少节点,共同存储托管一些不太敏感的数据,还是可行的。

所以我认为,区块链能有一些应用,但是不会很广泛的应用。

再说智能合约。这是大家谈得很多的一个东西,有人反对区块链重构一切或者说币是泡沫的时候,就有人跳出来说我们有智能合约多么多么nb,去中心化的信任,重构社会机制。前几天我花了一晚上时间看了看,就两个字,呵呵……

首先,请把智能两个字去掉,或者改成自动合约,因为这跟智能没有一毛钱关系。

然后我们继续。两只球队比赛,我赌a赢,你赌b赢,于是5毛赌局开始了。我怕你反悔,你怕我反悔,我们决定一起把钱交给黄鹤,让他主持公道。结果比赛结束了,我去找黄鹤领钱,发现他拿着钱带着小姨子跑了。如果有智(自)能(动)合约怎么做呢?我们写一个合(程)约(序),双方的钱包都写进去,如果a赢了你给我钱包打钱,b赢了我给你钱包转账,把这个job发到区块链的分布式网络去,这个job不可撤销不可篡改。然后静待结果,比赛结束了,结果出来了,job执行,一个人拿到钱,很赞,完美。

似乎有个问题,这个比赛结果哪里来?

去 第!三!方!权!威!地!址!拿!

啊?不是说去中心化的信任嘛?

微博上还有人跟我说预言机可以解决这个问题,简书上有个例子,区块链学堂——预言机、预言机网络、预测市场

“假设在区块链体系的租房APP上,租客与房东达成了租赁协议,其中有一个智能合同规定,在退房时,如果租客弄坏了客厅的小米9A电视,则需要按退房当天小米官方的价格原价赔偿。转眼到了退房的那一天,租客在APP上点击一键退房,APP自动下发指令让客厅的小米9A电视自检(确认是否损坏),因为租客在使用过程中,确实弄坏了小米电视,导致自检结果触发了智能合同中的赔偿条款,很不巧的时,当天小米天猫旗舰店正在做活动,比小米商城要便宜300元,此时智能合同赔偿金额要以哪个价格为准?

假设现在有一个第三方系统(预言机)可以提供权威准确、不可篡改、稳定、并可接受审计的价格查询接口,包括查询小米9A电视的价格,在执行赔偿智能合约时会自动触发该预言机,向区块链发送一笔交易,交易的数据块携带了小米电视9A的价格,随着每个矿工节点区块的同步,就保证了价格完全一致。

换一种解释,预言机整个完整的工作流程是这样的,首先预言机从小米官方获取小米9A的电视价格,然后向特定区块链上的地址进行转账,并将价格信息写入交易备注,这样智能合约只需要查看特定地址的交易记录,就可以获取小米9A的价格了。而由于区块链会自动同步存储包含交易的区块,所以智能合约几乎只需要访问本地就能得到价格信息。既保证了访问效率,又保证了价格的一致性。

总的来说就是由预言机(第三方)将数据推送给区块链,而不需要智能合约主动向第三方拉取数据。”

有卵用?讲了一大堆,预言机,分布式预言机,预言机网络,各种概念,最终呢?nb的预言机还是要去小米官网拿数据,而且折旧什么的一样各种纠缠,你的合约里面不可能考虑了各种情况万无一失。球赛的话,还得去球赛官方拿数据。

信任不是无源之水,最终还是有权威第三方作为根。所谓智能合约,并没有完成去中心化的信任构建,使用的还是区块链网络的不可篡改不可撤销特性——关于这个特性我前文讲过了,区块链节点要么在云计算巨头的计算中心里面,要么直接掌握在大企业私有的idc中心里面。智能合约的生效,还是依赖一个独立权威第三方,提供结果,作为合约执行的条件,这跟支付宝有多大区别?

“如果说预言机和预言机网络是数据的搬运工,那么预测市场则可以给智能合同提供未来准确的数据。

假设今天晚上在天河体育中心举行世界杯决赛,所有的直播和赛事数据都来自于CCTV5,却没有人能保证CCTV5的网站不被攻击,或者出现无法访问等各种意外情况,而一旦出现这些意外将造成严重的后果,在这种情况下,我们就可以运用预测市场的技术。

预测市场的最终数据从哪里来呢?数据来自于人,而非机器,比如那些博彩,下注,竞猜等一切与比赛结果相关,并捆绑了自身利益的人,都可以成为预测数据的提供者,因为他们捆绑了自身利益,他们不会牺牲自身利益提供虚假数据,从而有效地保证了数据的可靠性和真实性。”

最后是关于预测市场的。简单一句话概括,就是一人一票,我说a赢了你说b赢了。谁人多就是谁赢了。你们愿意参与到这种合约里面去吗?每次都赌自己在人多的那一面?

当然,智能合约在某些时候还是有用的。比如说彩票、赌博。这种结果不需要第三方给出,在job里面直接随机生成。但是如果合约代码有鬼,那就自认倒霉吧——别人还可以解释成bug。一旦涉及到现实,智能合约就乏力了。

币,我都懒得说了。

回到开头,区块链有一些应用场景,联盟链可以搞搞,但是颠覆一切?做梦。智能合约?比作为账本的区块链都不如——最后可能成为分歧争端机那样的东西,就在一个大的同一平台上对赌,反正要权威第三方,还要区块链干啥,阿里云飞天提供一套DSL语言就o98k了。

醒醒吧。

编辑于 2018-03-08