EOS的RAM被炒到天价的时候,我感到很好奇,于是去查了下RAM到底是什么东西,后来看到一个有趣的说法 [1]:RAM就像一个城市的土地,土地本身并不产生价值,只有在土地上盖房子才会产生价值。EOS遇到的问题是,大量投机者囤着土地,炒地皮,却不盖房子。
那怎么解决这个问题呢?其实也很简单:有两种模式,美国模式和中国模式——美国模式通过西部大开发免费派发土地;中国模式则是把土地全部国有化。两种模式都能有效解决问题。
不管这个比喻有多少的精确度,上面这段话让我突然意识到:我们的确正处于一个新的数字文明的进程中。今天的公链是一座新的虚拟城市,人们不分国籍、不分肤色参与到这座城市的建设中。
抛开EOS之前所处的争议,这座城市的确在吸引新的应用开发者加入。在面对土地被炒到天价的问题时,以21个超级节点为核心的委员会和所有的“居民”都在讨论究竟怎样解决这个问题——这其实就是一座虚拟城市的治理与进化。
其实在EOS之前,我们已经在以太坊这座城市上看到类似的历史了。不管你是不是开发者,应该都听过 The Dao 事件——黑客利用 split 函数漏洞盗取了360万个以太币,最后不得不逼迫以太坊实行硬分叉。
如果以太坊是一个国家,The Dao 事件就相当于美国建国历史中的“制宪会议”,它在当时引起了掀然大波,支持者、反对者、质疑者展开了大量激烈的讨论,最终对以太坊的发展产生了深远的影响。
这也是人类历史上第一次自组织的线上跨国投票,事情的大致信息我们在网上都能查到,但很多细节和故事其实是不为人所知的。社区的激烈讨论、vitalik顶着巨大压力所作的决定、大家强烈反对分叉的声音和最终用脚投票的真实选择,这些对区块链的社区治理都非常有启发意义,同时,只有了解这些细节,我们对以太坊、区块链的发展以及社区治理真实情况的理解才会更准确。
秉持着探索事物本质、了解真实历史的Geek精神,我们采访到了深度参与了 The Dao 事件并且在其中扮演重要角色的 Daniel,也是 Nervos Network 的联合创始人。通过他的口述,我们可以更深入的了解这个事件,思考区块链的社区治理、黑客存在的意义、什么是更好的民主以及去中心化与中心化体制的思辨。欢迎大家和我们一起回归历史,深度思考。
人类历史上第一次“虚拟国家的全民公投”,是怎样把以太坊从鬼门关拉回来的? | 亲历者自述The Dao的回忆
口述 | Nervos联合创始人Daniel 整理 | 头号玩家 & 橙皮书
“我记得当时我在imToken的办公室,那个时候我是imToken的联合创始人和CTO,当时我还带着小伙伴们在做imToken的开发,处于开发早期。然后当时在以太坊爱好者的中文群里面,V神突然发了一句话,说The Dao被黑客攻击了,钱正在被黑客拿走,最后有可能一分钱都不剩。 当时我第一时间就看到了这个信息,然后我还在办公室里面跟所有的人讲这个事情,感觉有点像玩笑,因为是太大的新闻,第一时间出现的第一新闻在第一现场被你看见。 然后V神的截图,就被传的朋友圈和网络环境到处都是,在那个时候你马上回去打开交易所,就会看到以太坊的价格是以一种自由落体的方式在暴跌。 如果我记得没错的话,以太坊的单价大概从一百二三十块钱人民币,跌到了四五十块。而且越是跌到谷底的时候,我身边很多小伙伴越是抱着绝望的心情,快速拼命地在抛售。 大家都蒙了。”
一个跨时代的虚拟VC
“The Dao 事件”是一个很长很长的故事。
事情要从16年说起。那时,区块链行业里有一家德国的公司,叫做 Slock.it。这家公司现在出现率不高了,但在那个时代,它是一家明日之星般的公司,非常有潜力,聚集了一帮在以太坊社区里非常有 Talent 的开发者,做的是实体资产上和区块链资产的业务。
在当时,Slog.it需要融资,而区块链公司是很难在传统行业里面去做融资的,因为区块链的生意跟现有的金融体系和法律体系结合,会产生很多问题。而在2016年,ICO还不像2017年这么流行,甚至是当时大多数人都不知道ICO。
Slog.it希望在区块链领域有非常专业的机构来投资自己,去筹集做开源项目所需要的资金。在融资的过程中,他们发现这是一个很强的需求。区块链领域里的每家公司都会有这样的融资需求。于是这帮天才程序员就有了一个大胆的想法:
既然现在没有专门针对区块链领域的投资机构可以投资我们,那我们自己为什么不自己造一个出来呢?
我们已经有了ICO这一个工具,我们为什么不用ICO这一个工具众筹一个VC出来,让这个VC来投我们,以及投跟我们相关的各种各样的区块链公司?
区块链也许能在VC这个领域有一个很大的前途。
于是他们花了很大的时间和精力,也集结了当时我能想到的非常棒的一批开发者,去做这件事。这些开发者每个人都有非常光辉的背景,并且在那个领域都有非常强的影响力,像Christoph Jentzsch 从2014年起在以太坊项目中担任测试领导者,而Stephan Tual则在以太坊担任过CCO(首席文化官)。
然后呢,他们就真的做了这件事情。从博弈论的角度来讲,他们提出来的DAO(Decentralized Autonomous Organization 分布式自治组织)这个概念,本质上是一个虚拟的投资机构,它的LP是所有参与投币的这些人,然后DAO通过融币,再把币拿去投各种各样的项目。
投资的机制具体是这样运作的:用户可以向它提起一个投资某个项目的Proposal,如果这个提议被超过半数以上的用户投票同意,那么这个虚拟VC就会拿出一部分钱,投到项目里。被投项目则需要保证,将来其业务会通过这个合约连本带利,持续的回馈给这个机构。虚拟VC里面的每个LP都会公平的分到相应的收益。
这件事情充分体现了区块链智能合约能去做现实生活中很难做到的一些事情。
首先,这个虚拟VC可以做到及时结算,非常高效,而且非常民主。
让所有的LP去共同做一个决策,它其实是一下子把VC和投资机构的门槛通过这种形式降低了。而且,很多区块链公司本质上拿了VC的钱,实际上是在给VC打工。
超越民主
当时从这个概念里,我看到的是区块链这种虚拟的投资机构,可能从 Slock.it 开始变成未来世界上的某种主体,某种形式,某种组织。
人们可以开始为区块链上的一个智能合约打工,人们的协作可以基于区块链的智能合约展开。 在2016年时,我看到The Dao这个项目是眼前一亮的。
The Dao还有一件事打动了我,叫做超越民主。
我举一个超越民主的简单概念:假如说我是一个卖水果生意的,同时也是虚拟VC的LP,突然有另外一个卖水果生意的人想寻求这个VC的投资,当其他人觉得他这个生意做的很好,想投,我出于自己的利益关系不想投,那我就变成了少数派。如果大家都同意的话,我也不得不同意,投资决定由少数服从多数,我的意见和意志被大多数人绑架了。
民主投票有的时候其实就是多数人对少数人的一种暴政,这种情况是存在的。
那么The Dao怎么处理这种事呢?
如果你不同意,那么任何时候,你可以以你个人的身份发起Propsal,一旦提出之后,你就可以拿走这个池子里属于自己的那一部分份额,也就是那些还没被投出去的属于你的那部分钱,而之前已经投出去的那一部分的钱,你依然享有他们的收益权。
这已经比现实生活中存在的任何一种的现行机构,更加公平了。
相比较现实生活中操作层面不可能实现的那种相对的民主来说,它从机制上保证了绝对公平和民主。所以我们把这个叫做超越民主。
当时我看到这个东西的时候,仿佛就是在黑暗中看到一道闪光。
真正有一种东西是现实中我们人类的组织协作无论如何也很难做到、但是区块链可以帮我们做到,而且保证一定能做到的。
两行致命的代码
这让我觉得是很了不起的东西。如果发挥想象开很多脑洞的话,能够基于这点做很多事情。然后我就给我身边所有的人讲The Dao这个东西,讲我对它有多着迷。当然这里面也有很多的问题,The Dao的规则设置中有很多博弈地方其实都有待推敲。
当时有一个做博弈论安全研究的人就提出了一个攻击假设,里面有12种博弈手段可以攻击The DAO项目。然后他把这个攻击假设写成文章发表出来,我当时在研究The Dao项目的时候,就发现博弈论是一个水很深的领域。
我还在我的个人博客里把这12种THE DAO的攻击手法,把它全文翻译成中文,在以太坊爱好者社区和以太坊世界里到处推广,让大家都知道THE DAO其实背后有这么多的问题,让大家意识到,当你用一个更好的工具的时候,其实背后是有tradeoff的,有很多东西要权衡。
尽管如此,我觉得我看到了The Dao那道光的未来,就是下一代的机械智能所能够做到的一个形式。
就是在那个时候,我对智能合约和区块链建立了某种非常纯粹的信仰,就是基于区块链能做到现在人类在协作和组织中做不到的这些东西。所以我对The Dao是极其的着迷,每天都在关注着The Dao的方方面面。
后面的事情大家也都知道了,THE DAO的失败不是因为他在博弈论层面上的缺陷,也不是它机制设计上的失败,而是在技术层面上的一个漏洞,形成了循环提现,造成了循环提现的一种攻击方式。
这种循环提现的漏洞其实我也不用赘述,因为网上有大量的文章介绍The Dao到底是怎么被攻击的。
这个问题其实很简单,就是两行代码。
那两行代码都是大牛写的,但是大牛在这个方面也疏忽了。只要把两行代码上下颠倒一下,各个功能没有任何变化,但是就没有这个漏洞了。The Dao也许就成了。今天也许是另外一个样子。
但是就是因为这两行代码,The Dao就没成。而没成之后,所有的人都开始质疑,开始怀疑区块链DAO的这种模式是不是可行的一条路。如果THE DAO成了的话,智能合约和围绕智能合约相关的应用推动这个世界的进程,我觉得可以加快一年到两年。
就是因为THE DAO的失败导致这个进程延迟了1到2年。当然可能有些其他原因,可能是基础平台不完备。但是现在大家可以看到,今天的开发者对智能合约的安全这件事情非常重视。
但在THE DAO之前,没有人提安全,也没有人重视安全。在THE DAO之后,大家才学会重视安全。
另外一个影响就是,大家再也不愿意去尝试用智能合约去做一些非常复杂的、并且可能非常伟大的有开创性的一些事情,有点裹足不前。有一种一朝被蛇咬,十年怕井绳的感觉。
但我依然坚信智能合约有光明的未来。基于区块链自动化的Dao模式,在大航海时代成为一艘泰坦尼克。但是这艘泰坦尼克并不代表着人类的航运世界就就此终结。我们只是需要更多的时间,重新去迎接下一个热点和下一个浪潮。
第一现场
话说回来,THE DAO当时究竟发生了什么事?
THE DAO当时募集了1150万个以太坊,而当时以太坊ICO的发行量是7000万,之后陆续挖矿挖出来一些。按照情况,全世界15%的可流动的以太坊全部都投到了THE DAO这个项目中,锁在了这一个智能合约里面。
一个智能合约掌握了全网络15%的以太坊,这是一件极其可怕的事情。它也成了最容易吸引黑客去攻击的靶子。黑客整个攻击手法非常犀利,也非常巧妙,黑客是一个顶尖高手,这点毋庸置疑。
后来发生的事情就非常有趣。我记得当时我们是在imToken的办公室,那个时候我是imToken的联合创始人和CTO,当时我还带着小伙伴们在做imToken的开发,处于开发早期。然后当时在以太坊爱好者的中文群里面,V神突然发了一句话,说The Dao被黑客攻击了,钱正在被黑客拿走,最后有可能一分钱都不剩。
当时我第一时间就看到了这个信息,然后我还在办公室里面跟所有的人讲这个事情,感觉有点像玩笑,因为是太大的新闻,第一时间出现的第一新闻在第一现场被你看见。
然后V神的截图,就被传的朋友圈和网络环境到处都是,在那个时候你马上回去打开交易所,就会看到以太坊的价格是以一种自由落体的方式在暴跌。
如果我记得没错的话,以太坊的单价大概从一百二三十块钱人民币,跌到了四五十块。而且越是跌到谷底的时候,我身边很多小伙伴越是抱着绝望的心情,快速拼命地在抛售。大家都蒙了。
因为当时我在看The Dao这个项目的时候,早期是很兴奋的,所以大概投了两三千个ETH,我身边每一个小伙伴也都投了蛮多的,因为它挺很安全的,你任何时候都可以把你所有钱都拿出来,只要你愿意。所以大家都愿意把自己所有的资产全投进去。
到了当天晚些时候,我记得当时整个办公室都是一种很焦灼的状态,所有的人都拼命的在各个地方打听最新消息,因为抛售已经来不及了,你的币不是在交易所里,你的币是在THE DAO里面,THE DAO被偷了以后你拿不出来。
后来V神是在一个很关键的时间点,突然发了很短的一篇文章,说事情可能没有想象的那么糟。第一点是THE DAO被偷的钱只占总额的30%,黑客就停手了;第二是,The Dao投的钱转入到了一个子合约中,这个子合约根据规定有一个28天的锁定期,在锁定期之内,黑客还拿不到这个钱。
然后黑客立马拿不走这个钱的话,就会有两种选择。
第一个是我们可以选择Soft Fork ,即软分叉,把这笔钱永远锁定。第二种方式就是通过Hard Fork,硬分叉,去把这些钱给拿回来,救回来。
当时V神发的这个消息分两重:第一重是,情况并不那么糟,钱还在那,黑客暂时拿不走。第二重就是关于分叉的问题。当时我印象很深,当天晚上这个消息一出之后,所有人都舒了一口气,因为并不是无可救药,是有救药的。然后市场也很快的回到一个不是很高的位置。
在这里面,你能看到V神作为以太坊的核心开发者在那个时间点发挥的领导作用。
第一时间站在前头,第一时间给大家一个信心和定心丸,然后告诉大家非常非常明确的信息,告诉大家这个事情会朝什么方向发展,有哪些可能性,并且让大家暂时不要那么紧张。
当时几乎所有的人都在谴责黑客的行为,大家也开始去讨论关于分叉的事情。而软分叉是一个相对比较容易做决策的事情,在社区几乎没有什么反对的情况下,大家都愿意同意软分叉,把这笔钱锁在那。
而这个时候黑客发出了一个新闻,说软分叉是不对的,他不希望软分叉,他愿意拿出1/3,也就是近120万以太坊,作为Reward,让大家不要去做软分叉。同时他也申明说,他只是践行了“Code is law”的原则,并没有触犯任何法律,所以他这个钱是该拿的。他有这样一篇挑战檄文的东西,讲得言之凿凿。
大家当然也并没有理会黑客的做法。当时官方很快就发了一个版本,针对这个地址的交易全部被宣布为无效。然后在这个交易之上,大家就可以去激活设定一个gas线,所有的矿池如果把自己的这个gas flow,即你能接受gas的水平线,全部拉低到这条线以下,就证明所有的矿池和共识节点同意这个分叉,之后这个分叉也被激活。
而在已经被激活的情况下,突然爆出了一个漏洞,说这个分叉是有bug的。任何正常的地址朝这个地址去发交易的时候不会扣 gas。
而在不会扣gas时候,作恶的人可以拼命地产生大量的海量交易,去朝这个地址发交易,而且没有成本。那么这个网络就会被 DDoS,被 DDoS 是一个很糟糕的结果,因为无成本的方式让全网络的交易阻塞,挖矿节点无法处理其他正常的交易,这是不可接受的。
所以在软分叉已经成功的时候,大家第一时间就拼命地roll back,回滚到分叉前的那个版本,然后把这个软分叉给宣布失败,当时社区一下就炸了。
社区炸了以后,大家说软分叉这个方案破产了,只能走最后一条路,就是硬分叉。而采取硬分叉的话,你的处理逻辑相对于之前是不兼容的。
硬分叉有两种,一种是带争议分叉,另外一种是不带争议分叉。
常规的软件升级这种,社区已经达成了共识,矿工升级之后完成一次硬分叉,这是正常的不带争议的分叉。关键在于,这次硬分叉是因为抢救参与The Dao的15%的以太坊的流动资产,那这次硬分叉是不是有问题?
这就涉及到人类长久以来一直在争论的,关于过程正义还是结果正义这一话题的讨论:是不是只要这个钱是被黑客偷走的,我们就该拿回来?拿回这笔钱的方式,是不是违背了区块链的核心理念,”Code is law”的理念?
V神作为社区的leader,在当时也扮演了一个重要的角色。我觉得有一点他做得非常好,就是在要不要分叉这件事情上,他是力主把这个决定权留给了社区,而不是由他自己来判断,因为他背负着巨大的压力。
因为这件事情,分叉是问题,不分叉也是问题,但是如果由他选择站到哪一边,那么对于他、对于The Dao、对于以太坊来说,都是不可估量的另外一种形式的伤害,所以V神其实选择了伤害最低的做法。
他说区块链是社区的,这件事情要留给社区,由社区来决定要不要做这些事情,然后不管社区做出什么决定,他都会坚持继续为做这个项目做贡献。
这点我非常认同,但是在这个过程中很多人会指责他,因为有些人是有巨大的损失在里面的。
1150万以太坊的30%被偷走,真的是一件很夸张的事情。当时出现了这个情况,我们就在以太坊爱好者社区的网站上专门开了两个帖子,一个是同意分叉,一个是反对分叉。
我们查找国外各个论坛关于同意分叉的各种观点,我们第一时间把它翻译成中文,然后把它汇总到一个索引帖里面,再把反对分叉的观点汇总放到另一个索引帖里。有同意分叉的观点和反对分叉的观点,也有对反驳同意分叉观点的观点和反驳反对分叉的观点的观点。
这些观点我们全部把它们发到以太坊爱好者社区的一个官方微信群里,然后再从这个群扩散到很多很多一些其他群里面。
在那个时候是空前绝后的,每个人很关心这件事,非常非常多的人参与到这件事的讨论当中来,这个讨论涉及的意义和层次非常非常深远,有些讨论像是吵架方式,而有些讨论是非常非常理性的。
我们当时公司内部都有不同的意见,我是一个利益相关者(笑),我有大量的钱在里面,所以我是希望能够硬分叉把钱找回来的,但是我有两个矛盾点在这里,第一我是想弥补损失,我自己是有巨大的损失,所以我很心痛。但是我也很担心,因为当时反对分叉的声浪巨大。
你能很明显的感觉到,同意软硬分叉的人大概占比是10%,而反对的人是90%。
十个人里面你感觉有九个人在讨论说我要坚决的抵抗分叉,只有一个人说我希望同意分叉,而不是反过来。然后,我内心很焦虑,我担心的就是如果最后的结果是不分叉,那大家损失很大。但是分了叉之后,那么多反对分叉的人将会离开这个社区,这又会拖慢以太坊的发展进程。
我想来想去,我甚至一度说服自己要接受不分叉,因为不应该由于这件事来拖慢以太坊的发展节奏,当初我们在做以太坊钱包和以太坊社区的事情,我们还是一门心思一腔热血地做以太坊这个生态。
这个事情最后就演化成为一个问题,那就是社区究竟如何去得出一个结论。
让我们来投票
当时我们在上海有一个朋友,就是现在的币乎创始人咕噜。
秘猿在当时已经在做CITA第一版的原型,当CITA的原型做出来,在理论层面上就有了非常高的性能的时候,咕噜帮助秘猿做了一次发布会。那场发布会特别有意思,当时V神也在现场,发布会的主持是我在主持,我记得印象很深的是,现场有人问V神关于分叉的话题,他当时面露难色的说这是社区的事情,而不是我来决定的事情。你能感受到他当时的那种艰难。
那次秘猿的CITA发布会很成功,我记得当天晚宴的时候,咕噜过来跟我聊天,说他想做一个投票工具,他已经有了想法,但由于他手上没有开发者,问我这边可不可以做,我当时就答应了。
我们之后就打了个电话,在电话里面聊具体的细节,他就给我出了一个idea。
当时的情况是,如果社区要投票,最理想的情况是去用自己的ETH去投票,你需要做两个智能合约,然后让大家把钱投到这个合约里,去算每个智能合约里面存了多少钱,有多少票,投票结束之后就把钱还回来。
但其实这个过程是有问题的,第一是,如果你的投票范围非常大,它无异于帮助这个市场锁定了大量的流动性。你其实是有点像在影响二级市场的价格。
所有投你票的人,在票被解锁的那一瞬间,这些流动性被释放,二级市场的供应量增加,价格势必下降。那么不投票的人,投票解锁前在市场上把自己的币卖掉,然后等到你结束的瞬间,再用低价把币买回来,他可以完成一次短期可预期的套利。
投票的人的损失,由非投票的人获利,这是一个不合理的事情。
第二个就是The Dao事件,大家一朝被蛇咬,十年怕井绳,不敢再把币打到一个第三方的合约里面去了,那个时候大家是谈合约色变、谈安全色变。
别跟我讲合约安全。你这次发现的是个语法漏洞,假如它本来就有系统安全的漏洞,又被偷了怎么办?要再来一次分叉吗?一次分叉都这么艰难了,你让所有人再去走两遍,就很尴尬。
当时咕噜给我出了个主意,就说你能不能这样想:用户投票的时候,给你转一笔钱,你把这笔钱退回去,然后再算一下,他给你转账的那个原来余额是多少,把这个余额和转账的钱加在一起。就这么简单。
我一听,说,对啊,这是很好的一个办法。而且这个可操作,当时在做imToken的时候,我是负责imToken整个后端的开发,也使用了类似的链上交易和链外统计的功能。所以我对这一整套东西非常清楚,知道该怎么做。
然后我周末用了一天的时间就把这个程序写好了。第二天礼拜一的时候,我找imToken一个做前端的小伙伴帮我做了一些前端工作,就写css的东西,也非常简单,给我的页面增加一个饼状图表,能展现投票token数量多少,Yes和No饼状图的占比是多少。这个投票工具就叫Carbon Vote。
(Carbon Vote,查看票数详情可参见投票页面)
这个投票工具推上去以后,马上就引起了非常大范围的讨论。开始是有人反对这种投票工具,说这个投票工具是有问题,然后马上就有人说你理解错了,这个投票工具不锁币,你放心投,代码我已经看过了,合约代码很简单,就一行代码,你给我打多少钱,我给你退回去。而且文案里面已经讲清楚了,怎么去做。
这个其实就是转账余额为零的交易,你给我做一次转账,这个转账里面是没有钱的,你大概只要付4万左右的gas费,很小的一笔钱,然后就完成投票了。
而且他亲测,转账之后他的票数是增加的,这个是准的,而且有搞技术的人看了代码也没有问题。大家就在Reddit上面开始讨论结果,一下子很多人就大量的认同这个方案,因为它安全,不锁币。
之后就有很多很多人帮我在全世界范围内去推广这个事情,而我在做这个网站的时候,离那个28天是否分叉的最后期限也就差个不到十天的时间。
那时候就有人开始出来说,你个投票工具是有问题的——我通过交易所给你做一个0.001的转账,因为交易所是生成的热钱包给你转,结果你一下子就记录了交易所的所有的币,所以这个其实可以被人用来操纵交易所投票。
而且他也亲测过,我投了yes,马上投了个no,两边那个票数就有巨大的落差,他可以去操纵大交易所的投票。他用非常绅士的方式在github上给我提出了这样一个疑问。
那时候我说我对这个问题没有解法。我只能想到一个方法,你们能不能告诉我哪些地址属于交易所?我把这些大的交易所地址从我的投票统计中给它摘出去。然后我很快的做了升级,把这些来自大地址的币全部排出去。
我还在网站上放了一个列表,告诉大家说我统计的这些地址上的票数特别多,但是已经被我摘出去了,而且这些地址是属于哪一个交易所的。我希望你能尽快发邮件给我告诉我哪一个地址属于哪一个交易所,而且我还希望说,如果你不相信我的地址,你自己把这个代码给跑起来,看能不能跑出跟我一样的结果。
在推特上不停的有这样的小问题,用词的问题、语法的问题、句子的问题、表达的问题、代码的问题、逻辑的问题、交易所的问题,噼里啪啦在两天之内就一下子把所有问题很快都解决掉了。
这个投票工具开始变得非常straight forward,在推特上变得非常非常流行,它的帖子就顶在那个地方,非常非常高。
很多人也开始探讨 CarbonVote 这种投票的治理模式,并且专门有人发了类似《 Carbon Vote教会了我们什么?》的文章,以及其他类似的讨论,包括如何通过智能合约投票的方式实现社区民主决策,以及投票的公平与效率如何取舍,等等各种相关的话题和针对本次事件的反思。
这个投票流程是这样的,你投了 Yes 之后马上投 No,程序逻辑会把你的票从 Yes 票池中拿掉,转到 No 的票池里面去,你再去投 yes,程序还可以继续把你的票从 No 票池中搬回去 Yes 票池,无论反复投多少次,程序都能 track 到,如果你放弃投票的话,你只要把你地址的余额转到一个新的地址中,因为新的地址即没有备包含在 Yes 票池中,也没有被包含在 No 票池中,所以,这部分投票就不会体现在任意票池中了。
因为整个过程都是链外分析,去分析 Ethereum 网络中每一个新打包出的块中所包含的交易,有没有跟 Carbonvote 的 Yes/No 票池有关,然后判断并统计出最新的投票结果,而且整个逻辑非常简单清晰并且透明,任何开发者都可以跑重复的逻辑并得到一致结果。
官方对 The DAO 是否要 Hard Fork 从未表过态,所以我们不知道官方是怎么想的,或者 Vitalik 是怎么想的。但是从某种角度来说,如果最后投票的结果是不分叉,也许并不是官方所期待的,因为如果最后不分叉,那么意味着黑客获取了最大的利益,而大部分参与者的利益受到伤害,所以如果最后不分叉,那么受损最大的也许是所有人对以太坊的信心。
官方到底想投 No 还是想投 Yes 没有定论,从来没有表态,也没有暗示,这点特别好,这是值得所有公链核心团队要去学习的。
当时社区里面的声音都是反对分叉,但是投票结果出来以后是一个巨大的反差:20:1,就是20个人赞同分叉,1个人反对分叉。
然后离投票大概还有两天时间的时候,以太坊的官方团队就发了一篇文章说,我们决定发一个新的版本,这个版本中包含了Yes分叉还是No分叉的一个Hardfork标记,过了这个高度之后,如果是硬分叉,那么这笔钱就会被挪到一个安全合约当中,如果不过这个分叉,是另外一个方向的话,这笔钱就会被黑客拿走。
至于这个钱会不会被黑客拿走,取决于那一个区块里面我做的carbon vote的投票结果,而这个投票结果在官方发那篇文章的时候已经非常清晰了,几乎所有人都同意分叉,只有少部分人反对,最后一定是hard fork的。
从官方发表文章之后,只剩下最后一个问题:未来的24个小时,有没有可能会出现很多人去把Yes票挪到No里面去,或者有人能不能通过控制大额的票仓去想办法去操纵这个投票,去产生一次本来是Yes最后造成No的结果?
后来事实的结果证明,从官方发布新闻到最后,Yes的投票量是继续在增加而不是No在增多,也就没有那种非常歇斯底里、反对分叉的人通过其他手段搞到更多的以太坊投到这里面去。
这次投票结果最后是安安全全地做了一次Yes的分叉,然后把钱全部锁到安全票仓里,再通过后面新的技术手段把这个钱都拿回来了。
从所有的参与者来说的话,是皆大欢喜,没有人受损失。但是呢,官方团队背了一个比较大的锅,这个事情就非常非常尴尬。
这事就很有意思,当时大家都以为都结束了,但是实际结果是“Code is law” 的原则被打破了,社区的意愿改掉了“Code is law”的结果。这是区块链历史上第一次由人的意志去改变了区块链本身的意志。
这代表着区块链不可篡改,不可伪造的神话被打破,而且是在以太坊上。
ETC出击
大概是Hard fork两天之后,有一家叫做Polonex 的交易所突然宣布说他们不认同这一次Hard Fork,他们将会去维护原来的那条链,并且在他们的平台上所有持有以太坊的用户将会等额的持有原来的那条链的币,他们起名叫ETC。这个事情马上引起了那些投反对票的人的另外一种层次的高潮。
而Polonex是这次活动最大的赢家。它通过产生ETC获得了大量的流量和大量的关注,赚了盆满钵满。
但是因为其他的交易所在这三天过程中没有太多的考虑到这件事情,就出现了另外一个情况。以太坊网络在那个时候的协议还没有升级,还没有加入一个很关键的交易参数叫Chain id,导致的结果就是那三四天里,如果你不知道后面会出现ETC,所有的人在你这里做一次ETH的转账,这一笔ETH的转账交易都可以把它保留下来,然后拿到ETC的网络去做存放,当存放之后,你提取了一定额度的ETH,你将会拿到一定额度的ETC,然后你再把ETH打进去,然后再提出来,再打进去再提出来。
这样的话,你是能源源不断地拿到大量的ETC。只要那个地址放在ETC网络上面,就能马上把ETC兑现出来,然后再把ETH转回去。交易所还要负责任,把你所有在交易所里面存量的ETH配比等量的ETC。也就是说,很多用户是通过这种方式揩了开交易所的油。
在那个很短的时间里面,在网络还没有引入防重放攻击之前的时候就遇到这种问题,大量的交易所因为这件事受到很大的损失,有一家交易所China BTC,在中山,它就是对于ETC不承认,对于ETC重放给用户造成的损失,不予赔偿。用户就炸了。
云币网当时是受到了50万美元以上的损失。当时ETC很便宜啊,但是云币网就认了,照价全部赔偿。反正云币网一直从来都没有站在用户的对立面去过,所以它就认了。然后就停掉了ETH的交易。
然后官方团队发现了这个问题之后,就出了一个快速的应对方案,马上就升级了客户端,在交易里面也做了一个新的参数Chain ID,对ETH和ETC用户用不同的Chain ID的方式来确保未来的交易都没有重放攻击,这是产生ETC的后话了。
ETC不是分叉产生的,而是通过交易所催孵化出来的一个人为的项目。到了后面的话,一旦有些什么风吹草动,再有什么链硬分叉的时候,交易所都会把这个交易停掉,在确保没有重放攻击的时候再把这笔交易打开。这都是吃一堑长一智的经验。
还有一些细节
接下来展开的是问答环节,这其中有大量社区治理和中心化去中心化的哲学思辨,大家可以细细品读。
问:Daniel 你可谓是完整经历了The Dao事件并且做了很多贡献,请问你从中有什么感受?
答:我是The Dao的投资者,投了很多钱,我也做了Carbon Vote,然后Carbon Vote 被官方选中,经历过这个事件,得到了两个很有趣的基于社会层面上的经验。
第一,就是在人群当中,当你想要去推进一件事,并且发布了一个制度安排,有人会因此受益、有人会因此受损的时候,往往获益的人不会站出来,振臂高呼,发出非常大的声量,说我非常认同。只有一些受损失的人会大声说,这件事情很傻X, 怎么怎么样。
很多本来很好的事情是被那些少数人反对、取消或者说扭曲而改变的,人们本质上其实都是脚来投票的,但是很多事情最后因为反对的声量盖过了好的声量,本来一件很好的事,对大多数人有益的事情,最后被变成了为了保护少数人的利益而去放弃掉大多数人利益的事情,这种事情在人类历史上比比皆是。
这次投票的结果就是在投票之前你会发现全部的社区哪哪都反对,没有什么地方你是觉得好像会支持它去真的Hard Fork,没有一丝希望,事实结果证明是20:1的比例,这么多人希望他Hard fork,而且是票在那里,拿脚投的票。
问:稍微打断一下,我们想问一下,当初投到The Dao里面的钱可以拿来投票吗?
答:不可以,这是一个很大的一个bug。就是真正的利益相关方的这些人,因为他们的币都锁在里面,所以没法投票。我也没有办法。
不应该这么说,如果你让我重新去想的话,我可能会想出这样一个办法,给所有投了The Dao的人空投一种ERC 20的代币token,让他们获得某种投票权,然后用他们这个投票权来去代替他们损失掉的ETH,来去做投票。
但是在当时那个阶段的话,对于我这种One Man Project,这个有点过了。我需要去分析所有的人,我要去找到所有人在The Dao里投的以太坊的数量,然后根据这个数量空投ERC 20的代币token到他地址上,然后空投完了以后还要教他用这个投票,我的投票不仅要支持以太网投票,还要支持ERC20投票,而且还要把票数都算好。
所以也就是说真正的利益相关方,也就是15%的利益相关方的投票权,被我给放弃掉了。
我是让剩下的85%的人来决定这件事情的走向,所以其实非利益相关方帮了The Dao的投资者的一个忙,非利益相关方里面有可能存在利益相关也可能不存在,但是这个也没有办法考证的,当时确实有人问过这个问题,但是以当时的技术手段我确实做不到了,时间也很短,因为大概只剩下十天不到的时间。
另外一件事情就是,投到The Dao里的票数是1150万,在外面可能还有5000万,6000万甚至7000万。但是真正参与这次投票的票数并没有那么多,也就是说真正参与民主决策的人其实是少数。
我觉得这分两种,一种人是有些人不愿意投票。还有一种人是看到Yes 就这么多了,我投Yes也没那么大意义。因为我是希望它是Yes的,结果大家都投yes我就不投了。
这些其实都是假设了,但是从事实结果来看的话,真正参与到这个民主决策的是少部人。也就是说,第一,是少部分人决定了整个网络的命运;第二,在少部分人中,大家也是用脚来投票的,投票结果是跟整个当时的社会舆论完全颠倒过来的。
这里也给了我一个经验,以后再去调查一件事情的民意的时候,不要看有多少人赞同,多少人反对,赞同的人是沉默的,反对的人才会喊出来,所以这是不客观的。必须得用脚来投票,而不是靠舆论。
有一些民主国家在投票的时候大家会看民调,如果民调已经很高的话,那就算是支持的,也有可能不去投票了,结果可能一不小心就反过来了。
有点像英国脱欧这种黑天鹅事件,很多人到最后他没去参加投票,第二天说英国脱欧了,好了,我去查脱欧是什么意思,什么叫脱欧,其实绝大多数人是不想脱欧的的,但是莫名其妙被少数人决定了命运。
问:接下来的问题,我们刚刚提到了一些关于社区治理的相关事情,你曾经做过ETHfans和rubychina,经历过很多社区运营,那么对你来说,你希望未来的社区治理会是一个怎么样的面貌?
我其实在方面没有自己的观点吧,至少我觉得我对这些东西的思考还不是那么深刻和透彻,但是我相信历史的选择,在社区治理的这件事情上,在现代的民主制度情下,很多现代化的民主决策流程是经过无数的迭代产生的,所以我觉得现在哪怕是一些相当成熟的民主制度拿过来用就好了。
比方说代议制,并且它追求大多数人的利益,相对来说去放弃少数人的利益,在不同的层次上,尤其是在精英层次上,大家互相去博弈,让世界绝大多数人获益,可能是我认为是比较好的方式。
问:这件事情是黑客造成的 ,这件事情给智能合约和区块链带来了很大的经验和教训,那么你认为黑客在区块链里面扮演了一个怎么样的角色,或者说,你认为你希望黑客在其中扮演一个怎么样的角色?
答:首先,黑客是不可能杜绝的。我相信一个逻辑,人群中不管是100人还是1000个人,100万个人,多少人当警察,多少人当小偷,多少人当好人,冥冥之中总是会有一个比例,也就是说,黑客永远会存在,它是一种现象,它存在是合理的,只不过在这个过程当中,黑客对想要提供服务和消费服务的人来说,无形中增加了额外的成本。
但是这种成本的话,是让你去思考和在去做规划,做这些事当中不可忽视的一部分。
黑客有时候确实是会让这件事情变得不便利,但是黑客也会让整个系统变得更便利、更强大和更健壮,有利有弊。但是对它的客观存在我是认同的,我不认同基于某种智能社区,消灭掉黑客的存在,我觉得这个是不合理的。
有一个特别有趣的故事,你们有没有看过黑客帝国,看到第三部的时候,电影其实已经进入到一个形而上的伦理探讨了,救世主NEO不是由系统出现bug产生的,而是那个造物者造出来的,造物主造出一个反面的角色,用来帮助自己完成进化和升级。
我觉得黑客帝国里面的黑客形象,就是帮助系统更健壮的一个角色,所以我觉得特别是适合来解释The Dao里面的黑客这个角色。这个电影到最后你会发现,希安,NEO一切都在造物者的算计当中,他未来保留希安,是为这个系统的升级和进化留下一个余地,所以我的态度是承认它的合理性。
问:经历过这件事情之后,你是如何理解中心化和去中心化?
答:我把中心化理解为一个体制,而体制是一个增加效率,降低成本和组织化、规范化的手段。中心化对我来说是一种体制,相对的去中心化你也可以把它看成一个体制。
中心化是秩序,中心化是规则,中心化是规范。去中心化的本质是混乱,你想象一下,区块链的本质是不可预测,是混乱,是没有人定规则,所以没有规则存在,而且他也不希望,也不要求产生秩序。
一个系统的本质是混乱,一个系统的本质是秩序,谁好谁坏?好像我们感觉秩序是比混乱要好,但是其实不是这样。
混乱有它的价值,混乱会涌现出一些新的东西,这些东西是在秩序的世界当中不存在的,或者是没有办法产生的。比如说一个例子,融资,在秩序的世界中,有法律,有条款,有各种各样的制度来保证融资过程中资方和项目方都受到法律的约束,然后当有分歧的时候,可以去找法律主裁,而在混乱的制度中,涌现了一个东西叫做ICO,它突破了一切的限制,他没有法律约束。
但是它拥有了极高的融资效率,当拥有了ICO之后,这种方式的存在对我来说并不是有多么厉害,而是ICO这种方式对既有的秩序和世界中的融资模式产生了巨大的挑战,然后现实生活中的融资模式由于资方是更专业,更有话语权,所以那些去融资的人的角色很不对等,往往是很受欺负,很不公平,当他有ICO这种方式可以去选择时候,它对冲掉了很多东西。
去中心化总涌现出的这种东西,去挑战了制度化体制中的一些既有的框架和一些制度,然后让这些制度的建设者和设计者不那么的肆无忌惮,同时也刺激它进步和演化,而这种进步和演化也要展现它的竞争优势去尝试,去跟混乱的制度中产生的新东西去竞争,导致的结果就是ICO这个模式本身会演化,ICO在挑战现有世界中的模式。而现有世界中的融资模式也在演化。
到最后两种方式的竞争结果应该是彼此促进,但是我希望永远有另外一种制度,永远有另外一种模式在挑战这个制度下的某些东西。没有挑战是最大的问题,所以我觉得一定要坚持保留一种东西能够去挑战另外一种东西的权利。这个可能性的存在,才能互相促进。
这对我来说是意义最大的,虽然基于混乱的制度很多东西效率非常非常低,但关键是两种东西必须的同时存在,并且相互竞争。我觉得有相互竞争的情况下,这个世界一定会变得更好,或者更高效。
问:是不是有点像凯斯和元老院的关系,当一个人权利过分大的时候其实就会引起系统的崩溃,把权力关进笼子,但是钥匙如果还在权利手里,那么其实意义也不大。
有权利的制约和分立的情况才更稳定,所以一定有一种东西去制约,而且在制约的情况下一定能更持久,互相去促进和进化,这个是我觉得区块链和围绕区块链所存在的去中心化的体制存在的意义,它帮助改进了中心化的系统。
(完)
本文由专栏作者橙皮书授权发布,未经许可,请勿转载。