智能合约是无用的
智能合约的概念已经有超过二十年历史了,但是随着以太坊的火热及其稳定的编程语言的发布,智能合约在过去五年成为人们谈论的焦点 .
在2017年的大部分时间里,我们现实的商业交易并没有像众多运用智能合约的ICO承诺的那样得到改变,但现在加密货币行业仍充斥着大量观点来解释智能合约是多么的革命多么的智能,它们认为智能合约将会彻底冲击和改变如同物流房地产等行业 ,甚至让全球各地的律师失去工作,让存在人类数千年的历史合同法成为过去式.
但是现在2019年了,智能合约给我们带来了什么呢,除了无数的ERC20代币和那个假养猫游戏.这么说也许对ICO和养猫游戏来说有点苛刻,至少作为概念的证明,他们是重要的,但是还有什么呢?人们承诺的数十亿美元市场价值业务在哪里呢?那些号称改变生活的DAPPS在哪里?到目前为止,在所有编写的Ethereum DAPPS,只有10%是有活跃用户的,EOS的DAPPS稍微好点,但只有不到5%的DAPPS拥有超过2000名的日常活跃用户。
事实是,智能合约是无用的,而且在可预见的未来仍将是无用的。它们一点也不聪明,它们是一些愚蠢的程序,功能有限,只能访问存储在区块链上的数据,并且不能与外部世界沟通。那些密码专家声称,所有的契约都只是一系列嵌套的“如果—则”语句,因此很明显,它们可以用机器语言复制,但他们还没有掌握什么使合约有用、它们如何以及为什么工作、以及为什么会出现问题和争议。
我们是如何走上这条死胡同的?我们应该做些什么呢?
首先,让我们看看智能合约是如何工作的,然后我将解释为什么它们不能以有意义的方式去工作。
智能合约如何运作
智能合约是每个区块链节点都需要定期运行的小型计算机程序。节点无法控制智能合约执行的指令,因此不应该信任它完全访问节点所运行机器的资源。
由于缺乏控制,区块链项目附带了虚拟机(VMs),这些虚拟机专注于确保智能合约执行的安全性。VM充当沙箱,防止智能合约对主机造成破坏。每个VM运行一组非常有限的指令,也称为字节码,这些指令包含每个智能合约(例如算术运算符、区块链事务等)。显而易见这意味着与本机运行的机器码相比,智能合约的功能非常有限。
智能合约也不能永远运行,无限期地占用主机的资源。智能合约像别人家的客人,最终必须离开。不幸的是,计算机理论中最著名的理论结果之一表明你不知道你的平均智能合约是否会停止运行,因此VMs只能计算字节码并强制智能合约在某个时刻停止运行。这是确保智能合约停止运行而不进一步限制功能的唯一方法,但它使实际使用效果会变得极其讨厌。
你是一个智能合约拥有者吗?你有足够的资金或者其他资源去支持它的运行吗?没有?那么你的合约就会在执行过程中终止。即使你很小心,物价也一直在波动,所以不可能合理地预算运行智能合约的成本。
问题还不仅仅限于拥有者,区块获胜者使用智能合约执行的结果更新区块链,并获得区块奖励和交易费用。但是网络的其他部分必须运行相同的智能合约来检查这些执行结果,而没有报酬。运气不好,你不是一个赢得对块签名权的节点操作者,你仍然不得不浪费计算资源来执行智能合约。最终你不会因此得到任何的改变。
无法进入真实的世界
人们经常认为,大多数现实世界的合同都可以表达为“如果—则”的集合。 如果满足某些条件,则处理合同的相应条款。 如果我收到100BTC,那么转让我家的所有权。 如果客户未在约定的日期归还您的租车,则应用罚款。“如果—则”语句是计算机的基础,而区块链让我们可以在一个无信任的环境中运行这些程序,那么我们为什么要为律师每小时支付200美元呢?
这可能听起来引人注目,但这是偷偷摸摸的手法。律师和公证人以及数千年的法律机构并不仅仅是一个笨拙的输入/输出处理系统。验证现实条件是否得到满足然后就验证达成一致的问题非常困难,而智能合约并不能解决这一问题。
想象一下:说你的合同如何解决取决于它执行的时间。那似乎合情合理吧?但区块链没有客观的时间来源。因此,您的智能合约需要对接外部时间服务。调用时间服务将当前时间返回到毫秒级别,然后用于执行合同。然后将此合同执行的结果添加到区块链中。
但是因为结果被添加到区块链中,所有节点必须就它们达成一致。 这是维持区块链共识的重要组成部分。 但请记住,每个节点都在自己的VM中独立运行这些合同。 所以他们都在稍微不同的时间访问时间服务并且收到稍微不同的时间戳。 因此,当需要验证下一个块时,智能合约执行的结果对于每个节点都是不同的。
(并且不好说我们不关心毫秒级精度,让我们只是舍入到最接近的秒,分钟,小时,等等。由于数千个节点都在不同时间访问相同的服务,所以舍入决策之间的差异是 不可避免地会降到一毫秒,你又回到了同样的问题。)
无论你如何调节它,各个节点都永远不会相互达成共识,区块链永远不会达成共识。
预言机又如何呢
由于智能合约约无法访问链接外部世界,因此必须将外部世界带到智能合约中。一些实体可以将来自外部世界的数据放到区块链上,从而使它可以用于未来所有跨网络运行的智能合约。这些实体被称为预言机 。 但这对我们没有多少帮助。在使用数据之前,需要将数据放在链上,但是如何知道需要哪些数据呢?我们不能把生活中的每一个事实都塞进区块链。所有的现代区块链都已经饱受膨胀之苦。
因此,预言机只能局限于对现实世界的非常狭隘的看法。但问题还不止于此,即使我们在少数几个数据源上达成了一致,这些数据也会随着时间的推移而发展。每次这样做时,预言机必须向区块链添加更多的数据。旧数据常常过时了,但它仍然保留在链上。考虑一下上面提到的时间服务,以及在一个保存所有事务历史的区块链上包含时间戳是多么难以置信的浪费。
预言机必须付出代价
预言机需要把数据放在区块链上的动机是他们想要得到报酬。但是预言机不像区块链验证器那样,区块链验证器会因为维护区块链而不断获得奖励:一旦预言机将数据放到区块链上,任何人都可以访问这些数据。预言机开发人员无法控制访问数据的次数,这可能会将单个支付扩展到数千或数百万个智能合约进行调用,并将每次访问的支付减少到非常小的数量,这降低了预言机提供真正有价值信息的动机。
预言机必须是可信任的
智能合约应该是不可信的,但这只适用于当它们被束缚在区块链共识的不可信本质上时。一旦它们离开区块链沙箱,就会引入信任元素。智能合约开发人员和用户必须相信预言机能够提供真实和精确的信息。缺乏适当的预言机激励措施,助长了提供垃圾数据的虚假预言的泛滥。那么预言机希望在智能合约开发人员意识到数据是垃圾并停止使用预言机之前至少从某人那里收到一次付款。
区块链开发人员可以通过在他们的平台中构建声誉系统来防止预言机中的欺诈行为。但是在提供陈旧或垃圾数据并免费收取付款之前,没有什么能阻止狡猾的预言机开发者通过提供一些有价值的答案来建立声誉从而达到欺诈的目的。
你也不能通过从多个预言机中得到答案,并反复核对来回避这个问题。依赖多个预言机来获得答案可以提高安全性,并减少对单个预言机答案的信任需求,但很快就会发展成一个自己的区块链共识问题。可以将其视为预言机共识问题。此外,预言机激励问题还没有解决,而且还在成倍地恶化!
对于提供正确答案的预言机,既需要激励,也需要惩罚提供错误信息的人。需要在不同的预言机之间就一个真正的答案达成一致意见,而且这个机制需要便宜,以便智能合约开发人员使用,否则就不会使用。如果不引入信任元素,这些都是不可能实现的,如果你已经准备好这么做了,那你为什么还要摆弄区块链呢?我们有许多长期建立的以信任为基础的系统,这些系统要便宜得多,使用起来也简单得多。
吃啥变啥
或许你对智能合约的雄心壮志没有那么高,区块链和智能合约已经被提议作为一种简化物流的方式,通过跟踪发货和沿着供应链跟踪原材料和产品达到朔源的目的。 例如,自动跟踪橙子从农场到我们的果盘的所有路径,似乎是计算机擅长的那种乏味的繁忙工作。但是使用智能合约在货物到达时自动释放付款,但也会遇到同样的信任问题,我们仍然需要信任一个人,以确保橙子处于良好的状态,并向系统输入正确的数据,将数据放到区块链上。我们还需要信任一些外部系统来正确地验证橙子是否已经到达。这里当然有一些审计方面的好处,但它离207年ICO繁荣期人们所期待的支付自动化还有千里之遥。
没有权力的智能合约
这就是“如果-则”语句的如果部分,事实证明这部分的情况也好不到哪里去。智能合约没有权力统治外部世界,他们只能对数字资产做出裁决。当然,你可以标记你的房子,在区块链上出售它,并试图通过一个智能合同来收取抵押贷款付款,但智能合约不能在不付款的情况下代表你收回房子。智能合约也不能让政府部门来更新房子的所有权。因此,我们仍然需要律师、公证人、政府、法警以及我们已经使用了数千年的以信任为基础的机构来解决这些问题。
一条死胡同
这不仅是理论问题,现实也是一场噩梦。尽管只能合同被宣传为纸合同的简单替代品,但人们在书写和确保合同方面绝对很糟糕。由于智能合同中的漏洞和漏洞,数十亿美元的数字资产已经丢失或被盗。
简而言之,智能合约在解决错误的问题。他们考虑的问题 是“如果-则”问题的那个破折号部分。
真正明智的合同是我们已经使用了几个世纪的合法合同。我们不需要计算机来运行这些合同——我们有最好的计算机来解释这些合同!我们可以利用法院来裁决这些合同,以及政府来执行。 希望我已经说服了你们,智能合约只不过是一个骗人的死胡同,但我们应该怎么做呢?
区块链上的自治代理
智能合约是没用的,但区块链仍然是一项令人难以置信的创新。去中心化的记账方式有利于三重会计,也被称为过去500年中最重要的发明,但每个人都没有注意到。可以将区块链看作是一个主分类账,所有的交易都是在这个分类账中进行的,其他内部系统都是在这个分类账中进行更新的记账方式。 我们不是试图让区块链进入外部世界,而是集中精力做相反的事情。 与可以直接访问区块链的应用程序相比,智能合约的功能显得苍白无力。 分布式账本和共识是实现Web,移动和其他类型应用程序的很好的机制,我们现在已经编写和部署了这种应用程序。
我们已经很擅长利用现有计算机硬件的全部能力来构建计算机应用程序了。缺少的一环是如何让应用程序以各方都能信任的方式私下安全地进行通信,而无需支付一些中央权力机构来管理(无疑是监视)程序。我们真正需要的是一个分散的信息总线让这些应用程序可以依靠它进行来通信。我们正在Stegos构建这样一个信息总线,它是我们构建隐私应用程序平台的一部分。
Stegos将使未来的区块链上的自治代理能够使用区块链进行私下和秘密信息交换。在以后的文章中,我将解释它是如何工作的,以及为什么它如此重要。同时,加入我们的[电报][14]查看我们的进展吧!