全球著名黑客教授警示:我们不应过分狂热,区块链技术还很早期
以下是由DT君整理的Emin Gun Sirer 教授演讲全文:
关于区块链的好处,以及可能对这个世界带来的改变已经被说的太多了,我在这里就不加赘述了。我想和大家分享的是人们如何应用区块链,以及区块链背后的技术支撑。
如果要从整体上把握区块链,首先要知道人类记录财富的方式。当人们看到黄金,马上想到的就是财富、价值,但这属于人类文化传统对其价值的认同。为什么唯独是黄金?有很多石头都比黄金更漂亮、更耐腐蚀,人们为何没选择这些石头?
当然,世界上还有其他类型物品被赋予过价值,比如贝壳,漂亮且难以伪造;以及中国古代的刀币,用铜铸造的特殊货币等。
我还见过一种比较神奇的货币。在一个南太平洋小岛上,当地居民用一种巨大的石头圆盘作为货币(如下图)。这种“巨石货币”存在的原因很简单:因为这个岛上找不到这么大的石头。如果你想买别人家的土地,那就把这个大石头硬币推到别人家门口放好,地就归你了。
有一个英国人类学家在 1963 年左右专门在这个岛上做过研究,这个岛上基本找不到这么大的石头,得从别的岛上开凿后再运回来。偶尔一不小心,这些石头硬币会从船上掉下来落入海中,很难再捞上来。
那么问题来了,落入海中的石头硬币到底属于谁?原来的主人肯定是花了力气去开凿并搬运它,岛上都是善良的居民,彼此也都信任。所以会达成这么一种交易:把手头现有的硬币,外加躺在海底那枚硬币的归属权都移交给卖主。
为了避免胡说八道的嫌疑,下面有张沉入海底的石头硬币图片(全场大笑)。
大家请留意一点,在所有人都承认这些石头硬币价值的基础上,他们将海底那枚看不见的硬币的所有权进行了转移。这是使得交易能够顺利达成的关键。实际上,这也是区块链技术赖以存在的基础。
如果要给区块链技术下一个定义,我想应该是这样的:
区块链是一种将系统内有效交易进行编码的可附加账本,且满足以下条件:
然而,问题就往往出在这里,上面提到的三点在以前的实践过程中都遇到过失效的情况。为了说明区块链的重大隐患,接下来我围绕这三点一一展开。
根据这一条件,所有的交易都必须符合事先约定的规则,那这些规则到底是什么?在计算机学里,对规则描述可以由外部技术说明文档来定义。但对于区块链及其应用来讲,这种定义方式完全不适用。
大家可能都听说过“代码即规则”(Code is Law),虽然劳伦斯·莱斯格当时是在完全不同的语境下提出这个概念的。但这个说法其实多少解释区块链的某些应用情况,比如,一旦代码写出来开始执行,就就永远无法收回了。
但今天我想说的是,代码并不是规则,规则才是规则,而且代码到处是bug!
按照当今工业标准,每一百行代码允许存在一个bug,而比特币客户端大约有 3 万行代码。幸运的是,至今我们还没有在其中发现致命的bug。
然而,第一代的区块链技术开发者们其实是避开了技术规范说明文档的,原因当然有很多,比如代码和技术规范不一致会导致问题、缺乏调解差异的有效方法,以及最重要的一点:开源技术的开发者们认为技术规范会抹杀他们的创造力。
也正是由于缺乏统一的技术规范,在 2010 年 8 月,发生了一起比特币历史上的大事:一名黑客利用整数溢出的漏洞凭空创造出了 1840 亿个比特币,而比特币系统设计之初的限额仅为 2100 万个。最终,比特币开发社区在“矿工”们的帮助下重写了相应代码封堵了漏洞。
共识机制是在交易发生时,所有节点都认同的某种约定。共识机制也很容易失效,因为同一时间点可能会发生很多起交易,所以比特币目前也面临交易次数扩容的问题。此外,交易过程中还存在一些误导因素,比如“拜占庭将军问题”(可简单理解为各个利益方相互制衡的互不信任关系)。
毕竟,比特币可以看做是一种为分布式系统复杂算法问题寻找通用解决办法的方案,而共识问题一直是分布式系统所固有的。通用的逻辑是:所有交易必须在当前世界允许的基础上进行。而早前的区块链遵循的是:一旦做出决策就无法撤回。中本聪和他的比特币的创新之处则在于:在有可能付出一定代价的前提下,允许对决策进行修改。
共识机制失效在比特币领域也确实发生过。2013年,比特币客户端被升级到v0.8版本,允许单个区块能容纳更多的交易频次。不久以后,某个区块的交易次数过多,直接导致该区块一分为二。开发者社区只能对软件进行降级,同时撤销了数小时之内的交易。
不可篡改性是区块链技术最重要的特质,也是加密数字货币及其应用场景的核心原则。没有人愿意在互联网上进行数字货币交易后还要去处理退款这类的麻烦事,也不希望因为某些监管机构的介入使自己的数字资产化为乌有。
关于区块链这一特征最激动人心的应用就出现在2016年5月,数字自治组织DAO(Digital Autonomous Organization)正式启动。DAO是区块链领域一个非常成功的实践案例,该项目由风投基金、区块链创业者、技术开发社区共同合作,试图打造一个去中心化的分布式基金,用于投资各类区块链项目。
这个项目在一份“智能合约”(Smart Contract)的基础上建立了一个“以太坊”(Ethereum),由智能合约所包含的代码和程序与其他合约进行互动、作出决策、储存数据,以及将“以太币”(Ether)转给他人。
简单的说,这是一个没有任何中心机构的基金,每个人都可以将自己持有的以太币投资给你信任的项目,并根据少数服从多数的原则来对项目进行投资。
项目启动三周后,筹得的款项竟然超过1亿美元,这引起了我和我同事们的极大兴趣,因为我们从没想过这样一个项目居然能筹集到这么多钱。于是我们开始很认真的检查其代码,结果发现漏洞百出,毫不夸张的说,谁要是开一辆卡车进去,能装一车以太币出来……
后来我们以旁观者的心态,在谷歌文档上发表了一篇文章,指出了DAO智能合约中存在9个重大漏洞,并警告人们不要放太多的钱进去。可是好像大家不以为然。最终,狂热的人们为这个区块链投资基金贡献了2.2亿美元。
但就在DAO正式运行的第一天,有一个黑客利用我们公布的一个漏洞,以及自己发现的另一个漏洞,成功从基金的以太账户中窃取了5200万美元。
当然,这名黑客最终并没有将以太币兑现。当 FBI 和陪审团找到我咨询相关技术问题,问我这种案子该如何定罪。我半开玩笑说:“这可能会成为第一个指控机器人的案例了。”因为整个DAO的决策全部由预先写好的代码负责执行,并没有任何人工介入,所以也不存在违法行为了。
作为一个从事学术研究的人,我希望从技术角度给大家提个醒,因为现在区块链过于火热,可能会导致一些问题:
我们的电脑、手机等计算设备如果用来处理大额数字资产,其安全性不堪一击;所有的私有区块链都是建立在“拜占庭将军问题”之上,这是完全错误的做法,都会面临独立失效的可能性,如果进一步这种可能随时失效的协议部署在每个节点上,后果不堪设想;
智能合约是由类似JavaScript语言的工具开发出来的,缺乏技术规范和可靠性;失效保护和止损方式不明确。
最后,我想说的是,区块链和太空、基因等其他前沿技术一样,非常激动人心,其改变世界的巨大潜力也是可以预期的。当然,在技术探索的过程中会遭遇很多失败,我认为如果要减少失败,就应该运用最可靠的科学方法。
设计合理的架构、协议、应用场景、安全系统、技术开发规范等,都是当前区块链亟需解决的问题。
本文为转载,转载请注意真实来源