作者陶荣祺系Onchain小蚁 战略策划VP,本文载于小蚁博客
就在TheDAO(daohub.org)以超过10亿人民币轻松摘得全球第一众筹,让世人惊呼“智能合约的时代已经到来”过后第20天,它又以一种戏虐的方式开始刷屏:黑客利用TheDAO合约中的错误漏洞,鲸吞超过三百万个以太币(事件发生之前每个以太币价格约为130元,1天后约50%,同时该部分以太币27天内处于冻结状态尚无法提取),其后TheDAO和以太坊社区快速响应,提议软硬分叉应对黑客攻击,下一步以太坊社区需要经历的将是:选择分叉=接受中心化质疑打破智能合约神话,或者维持现状=眼睁睁看着黑客哈哈大笑携款走人。
有人告诉我TheDAO出事后,我的第一反应是:开玩笑吧?没开玩笑。生活就是最精彩的剧本,你永远不知道下一块巧克力的味道。关于TheDAO事件,以下两方面值得思考。
1、中心化,还是去中心化?
2、信任人,还是信任机器?
1、中心化,还是去中心化?
抛开智能合约争议不谈,单就以太坊创始人Vitalik公开表示通过软硬分叉解决该事件来看,人们争论的焦点集中在“中心化”还是“去中心化”上。有一种说法是:以太坊提议分叉是“中心化”的行为,与“去中心化”相反,让人失望。与此相对的一种看法是:以太坊团队反应及时,及时制止了事态的进一步恶化,做得好。其实这两方观点背后隐含的争论是:什么样的做法才是正义的?是要平等,还是要领袖?是要结果好,还是要过程好?是选择机器正义,还是人类正义?
首先,我认为人们对于“去中心化”赋予了太多其他的东西。上文中的“去中心化”观点,隐含着的是一种“人人平等”,甚至“共产主义”的思想。此种思想里,“去中心化”一个所有人之间互通有无丰衣足食人人平等的理想世界。从网络结构上来说,这种“共产主义去中心化”思想是一种对于“随机网络”(Radom Network)的期望状态。
网络学告诉我们,根据集聚程度和平均最短距离区分有以下三种网络状态:完全随机(Random)、小世界(Small-world)和规则网络(Lattice)。现实里人类社会的网络状态既不是平等理想化的随机网络,也不是官僚军事化的规则网络,而是一个不完全平等但也不会单调无聊的,中庸有效的小世界网络。由于人脑的限制,由人参与的网络状态里,形成的不是随机网络(低本地效率高全网效率),而是小世界(高全网效率高本地效率)。小世界是一个服从幂律(28定律)的世界,也是有效的世界,真实的世界,区块链社区也是小世界形式的网络。
让我们再看一看TheDAO事件中对于“中心化”的质疑:这一次以太坊领导者为了救TheDAO发起软分叉,下一次难免不会利用此权利“作恶”。问题是,在一个完全“去中心化”的平等随机网络里,不用说将来了,就连这一次的软分叉抉择都会因为低效而难以出现。TheDAO很可能会因此失去补救的可选项(注意是“可选项”,而不是一定如此。虽然我们从事后出发看软分叉被发起了,但是事情发生的过程里这只是一种选项(option),而非定数)。
市场原教旨主义者会说,不救就不救,就让市场来决定,这才是正义。让我们看一个熟悉的例子:2008年9月15日,拥有158年历史,美国第四大投行雷曼兄弟投资失利申请破产保护。这一天后源于美国的次贷危机快速发展成为全球性的金融、经济危机,直到8年后的今天,世界各国的人们仍然看不到这场危机结束的时点。而9月12日美国财长保尔森公开表示对雷曼兄弟的“见死不救”被普遍认为是压垮骆驼的最后一根稻草。
让我们大胆想象一下,如果保尔森选择救助雷曼兄弟,而Vitalik决定对TheDAO“见死不救”的话,结局又会是如何?可能经济危机不会像现在这样沉重而深远?可能TheDAO已经在当天归零?也可能世界没有任何改变。我并不是说哪一个选择一定正确或者说正义。为了一列火车的生命而选择撞死一个路人是正义的吗?不见得。但为了一个路人而牺牲一列火车的生命,一样也会遭受到事后的非议。至少现实小世界的网络状态里还给了我们选择的机会,更需要关注的不是临危如何选择,而是危险发生的原因。在此次TheDAO的案例里便是,智能合约应该或者说可以被信任吗?
2、信任人,还是信任机器
经过此役,人们纷纷开始提出质疑:智能合约真的值得信任吗?智能合约是否只是一种噱头?甚至,区块链值得信任吗?所谓“信任的机器”是否只是一种炒作?
从技术上看,此次Bug出现在TheDAO团队的合约编写,和以太坊本身无关。此Bug出现的直接原因被认为是TheDAO团队能力不够,缺乏对于代码的复核机制。但是,仅此而已吗?
TheDAO是什么?按照其官网说法,“TheDAO is Code, Autonomous, Revolutionary, Rewarding”,即“TheDAO是革命性的自治代码,顺带还有钱可赚”。一夜之间,TheDAO如在云端的“去信任化”仿佛掉了个头,变成为了“不可靠”重重砸在地上。
那么到底什么是“去信任化”?这真的可以实现吗,还是说只是一种区块链爱好者的自欺欺人?Vitalik早在一年多前以太坊尚未上线时便提出相关的深度思考(这篇Blog没有获得很多的关注,但我始终认为这是他关于区块链整体思考中最重要的部分之一,甚至可以把之一去掉。该篇Blog十分之难读,尤其中间两个模型图当初我在一段时间里甚至先后有过相反的理解。本文末尾附上此前和韩锋老师交流时的相关解读文字,供读者批评)。我不喜欢用“去信任化”这个词,因为这个词给人一种错误的暗示:信任是一种负担,信任是不必要的,离开信任人们将可以变得更好。这就像是在说:吃饭是一种负担,要是能够离开吃饭,人们将可以变得更好一样。在我看来,信任是人类互相协作的重要前提,而协作则是合作博弈的基础部分。人类社会的经济发展离不开合作,离不开协作,也离不开信任。区块链所解决的并不是把信任消除,而是产生一种更低成本的信任机制,以使人类社会的合作成本更低,效率更高。这也是《经济学人》对于“区块链:信任的机器”标题的含义,即人类现有信任体系在某些合作领域成本高昂,此时可以通过区块链这种低成本的信任系统(机器),以此实现合作。
如果说信任人意味着对于人的制度和体系的一种不可知但又只能相信的话,那么信任机器则意味着对于机器、代码、系统的不可知但又只能相信。从TheDAO的例子看,其Bug出现之前人们对于TheDAO充满信任和信心。这种信任和信心来自于:终于可以摆脱人这种摇摆不定且看不透猜不着的合作,好好享受来自于机器合约的公开、透明和稳定了。问题是首先代码合约虽然公开、透明,但却很复杂,复杂到即使有问题,一般人也无法找出。
现在看来,过去我们都或多或少忽视了智能合约背后人的因素:我们或多或少把智能合约和机器或者无所不能的人工智能等同起来。实际上智能合约是需要人一行一行写出来的代码,当代码变得越来越复杂,也就意味着智能合约的越来越不可知——这种不可知不仅仅在使用者层面,也体现在代码的发布方上。经过此事件后,就算有了Code Review,也无法保证代码的准确无误——如果说对于人的信任是因为看不透摸不着而产生的一种预期的话,那么对于机器的信任也一样是一种无法完全了解状态下的预期而已。一个无法被参与方读懂的合约,是否是一个好的合约?是否值得信任?以至于未来会否出现这样的情况:对于某项智能合约的置信需要专业的第三方代码人士给予信用评分。倘若真的如此则会显得拗口且幽默——代替人类组织实现信任的信任的机器反而需要人类给予信任评分。
实际上倘若从演化和成本角度出发,把区块链当作是实用工具而非神话宝具,就会更容易接受这种结果,即:未来会是一种不断演化的过程,在这个过程里不论是哪种形式,只要区块链能体现出更低成本更高效率,那么就会出现而且广为接受,否则则会被淘汰。这样看的话,通过人类组织的第三方机构对于智能合约进行信任评分只要能够提供相应效率,也未尝不可。而对于TheDAO和以太坊来说,要改进的地方正如Vitalik一年多前说的那样:“whatever our model is, figure out how to reduce the probability that our systems will fail.”
TheDAO事件之后我们可以发现,信任人还是信任机器,并不是非此即彼对于错的关系。对于区块链的应用和发展来说,“To be or not to be”甚至都算不上是一个问题。不管是信任人还是信任机器,只要能提升人类社会运行的整体效率,实现帕累托改进就是好猫。我认为区块链并不是一种摧毁性的创新,而是一种对于现有信任机制的改良。现有人类活动中的各种信任机制结合区块链之后才能更好的发挥整体作用。相比此前谈起区块链仿佛在云端遥不可及神话般的姿态,现在这样落入凡间改良主义的思考是我更愿意看到的。
对于小蚁区块链的影响
TheDAO事件对于全世界所有区块链项目都是一个警示同时也是一个很好的案例学习。对于小蚁区块链来说,在将来的迭代中应当将应急预案预置到框架中,尽量避免为此做分叉;此前已经开始,此后则应更多的向CA等现有电子签名体系学习与合作;而此次以太坊团队面对黑天鹅事件的及时响应,以及社区事后的积极应对,也是小蚁团队以及社区需要学习的地方。相比上述这些,我觉得更重要的可能是心态上的改变:小蚁所做的事情对社会未来的影响和对于安全的要求,比我们之前所想的还要深,也还要高。
庆幸同时也荣幸的是,小蚁区块链在设计之初就是从改良主义的角度出发,将现有信任体系融入到小蚁的设计底层。小蚁设计符合《公司法》以及《电子签名法》的现有框架。同时也预留了相应的接口,未来能够与各类现有信任体系高效直接的对接。小蚁团队坚信区块链和法律体系,以及区块链与现有社会信任体系的结合是其发展的未来所向。
附:对于Vitalik“Visions, Part 2: The Problem of Trust”之中两个模型图的理解
对于Trustless观点/模型的A种人来说,始终持有一种对人的不可知论,即对于其他人做坏事的“动机-利益”信息获得的不可知(Incentive agnosticim),也不知道人们说的话是真是假。也就是我们常说的不信任人。由于这种不可知,在A种人的Trustless模型里,天然有一种横轴向右的倾向,即对其他人越来越不信任(“动机-利益”组合的信息越来越不可获得,以及越来越不诚实)的倾向。以此出发,A种人能够做的,便是在横轴向右的情况下尽力维持纵轴(Survivability,系统的耐受性,系统的可信性)不要向下走。结果也就是这张图。
对于持有Trustful观点/模型的B种人来说,正相对,天然具有一种横轴想左的倾向,即相信人,认为可以获得人们做坏事的“动机-利益”的信息。在这种情况下,改进整体模型最好的方法就是纵轴向上(横轴向左变化会降低整体模型效率)。也就是说,B种人能够做的,便是在横轴不动的情况下,尽力提升纵轴,即在对一组“动机-利益”组合不变的情况下,减少系统失败的可能性(纵轴向上)