NEO TEAM BLOG
To Be Or Not To Be —— 记在TheDAO事件之后

2016/6/20 19:07:55

陶荣祺

就在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.”