美文网首页
区块链历史:第一次「虚拟国家的全民公投」,是怎样把以太坊从鬼门关

区块链历史:第一次「虚拟国家的全民公投」,是怎样把以太坊从鬼门关

作者: NervosNetwork | 来源:发表于2018-10-29 16:38 被阅读117次

    不管你是不是开发者,应该都听过 The DAO 事件:黑客利用 Split 函数漏洞盗取了 360 万个以太币,最后不得不逼迫以太坊实行硬分叉。

    如果以太坊是一个国家,The DAO 事件就相当于美国建国历史中的「制宪会议」,它在当时引起了掀然大波。支持者、反对者、质疑者展开了大量激烈的讨论,最终对以太坊的发展产生了深远的影响。

    这也是人类历史上第一次自组织的线上跨国投票,事情的大致信息我们在网上都能查到,但很多细节和故事并不为人所知。社区的激烈讨论、Vitalik 顶着巨大压力所作的决定、大家强烈反对分叉的声音和最终用脚投票的真实选择,这些对区块链的社区治理都非常有启发意义。同时,只有了解这些细节,我们对以太坊、区块链的发展以及社区治理真实情况的理解才会更准确。

    秉持着探索事物本质、了解真实历史的 Geek 精神,我们采访到了深度参与了 The DAO 事件并且在其中扮演重要角色的 Daniel,也就是 Nervos Network 的联合创始人。通过他的口述,我们可以更深入的了解这个事件,思考区块链的社区治理、黑客存在的意义、什么是更好的民主以及去中心化与中心化体制的思辨。欢迎大家和我们一起回归历史,深度思考。Enjoy~

    人类历史上第一次「虚拟国家的全民公投」,是怎样把以太坊从鬼门关拉回来的? | 亲历者自述 The DAO 的回忆

    口述 | Nervos 联合创始人 Daniel

    整理 | 头号玩家 & 橙皮书

    「我记得当时我在 imToken 的办公室,我那时是 imToken 的联合创始人和 CTO,当时我带着小伙伴们在做 imToken 的开发,处于开发早期。

    然后当时在以太坊爱好者的中文群里面,V 神突然发了一句话,说 The DAO 被黑客攻击了,钱正在被黑客拿走,最后有可能一分钱都不剩。

    我第一时间就看到了这个信息,我还在办公室里面跟所有的人讲这个事情,感觉有点像玩笑,因为是太大的新闻,第一时间出现新闻在第一现场被你看见。之后V神的截图就被传的朋友圈和网络到处都是,在那个时候你去打开交易所,就会看到以太坊的价格是以一种自由落体的方式在暴跌。

    如果我记得没错的话,以太坊的单价大概从一百二三十块钱人民币,跌到了四五十块。而且越是跌到谷底的时候,我身边很多小伙伴越是抱着绝望的心情,快速拼命地在抛售。

    大家都蒙了。”

    一个跨时代的虚拟 VC

    「The DAO 事件」是一个很长很长的故事。

    事情要从 2016 年说起。那时,区块链行业里有一家德国公司,叫做 Slock.it。这家公司现在出镜率不高,但在 2016 年,它是一家明日之星般的公司,非常有潜力。这家公司聚集了一帮在以太坊技术社区里的明星工程师,做的是一种利用区块链技术实现一把逻辑锁,用这把锁可以锁定区块链世界中,甚至现实世界中的资产,并且可以实现安全交接,资产转移。

    在当时,Slock.it 需要融资,而区块链公司是很难在传统行业里面去做融资的。因为,区块链的生意跟现有的金融体系和法律体系结合会产生很多问题。而在2016 年,ICO 还不像 2017 年这么流行,甚至当时大多数人都不知道 ICO...

    由于当时没有专业的 Token Fund,而大量的创新型区块链团队需要融资,去筹集做开源项目所需要的资金。在 Slock.it 融资的过程中,他们发现区块链公司融资是一个很强的需求。于是这帮天才程序员就有了一个大胆的想法:

    既然现在没有专门针对区块链领域的投资机构可以投资我们,那我们自己为什么不自己创造一个出来呢?

    既然区块链领域已经有了 ICO 这个工具,我们为什么不用 ICO 来众筹一个虚拟 VC 出来,让这个虚拟 VC 来投各种区块链项目,包括投资我们自己呢?

    区块链也许能在投融资领域有光明的前途。

    于是 Slock.it 投入了很大的时间和精力,集结了我能想到的可能是当时棒的一批开发者,去做了 The DAO 这个项目。当时,参与 The DAO 的开发者几乎每个人都非常厉害,都是当时在区块链开发领域拥有最强声誉影响力的开发者。如 Christoph Jentzsch 从 2014 年起,在以太坊项目中担任测试负责人,而 Stephan Tual 则在以太坊担任过 CCO(首席文化官)的角色。

    后来,他们正式发布了让整个区块链开发界感到惊艳的 The DAO 项目。从博弈论的角度来讲,他们提出来的 DAO 这个概念,本质上是一个去中心化自治的虚拟投资机构,它的 LP 是所有参与这个项目的投资者,然后 DAO 通过融资币,再把币拿去投各种各样的项目。

    投资的机制具体是这样运作的:项目方可以向 The DAO 发起一个投资项目的提议(Proposal),如果这个提议被超过半数以上的用户投票赞同,那么这个虚拟 VC 就会从资金池拿出一定比例的资产,投到项目里。被投项目则需要保证,将来其业务会通过一个 The DAO 的子合约连本带利,持续的回馈给 The DAO。虚拟 VC 里面的每个 LP 都会公平的分到相应的收益。

    这件事情充分体现了区块链智能合约能以很低的成本去做现实生活中成本极高,难度很大的一些事情。

    这个虚拟 VC 可以做到即时结算,高效且透明

    让所有的 LP 去共同做一个决策,它其实是一下子把 VC 和投资机构的门槛通过这种形式降低了。而且,很多区块链公司本质上被这个 VC 投资后,就变成了是在给这个虚拟 VC 打工了。

    超越民主

    当时从 The DAO 这个模式中,我看到的是区块链带给我们的组织结构变化的趋势,即这种虚拟的投资机构,有可能代表未来一种全新的主体,全新的形式,全新的组织,并可能会在未来非常流行。

    人们可以开始为区块链上的一个智能合约打工,人们的协作可以基于区块链的智能合约展开。在 2016 年时,我第一眼看到 The DAO 这个项目,眼前为之一亮,一下子就沉迷不可自拔。

    The DAO 还有一件事打动了我,叫做超越民主。

    我举简单的例子:假如说我是一个卖水果生意的小商人,同时也是一个虚拟 VC 的 LP,突然有另外一个卖水果生意的人想寻求这个 VC 的投资,当其他人觉得他这个生意做的很好并达成一致的决策准备投资,而我出于自己的个人利益冲突不想投,那我就变成了少数派。如果大家都同意的话,我也不得不同意,投资决定的规则是少数服从多数,我的意志其实被大多数人的意志绑架了。

    民主投票有的时候其实就是多数人对少数人的一种暴政,这种情况是客观存在的。

    那么 The DAO 怎么处理这种事呢?如果你不同意,那么任何时候,你可以以你个人的身份发起 Proposal ,一旦提出之后,你就可以拿走这个资金池子里属于自己的那一部分,也就是那些还没被投出去的属于你的那部分钱,而之前已经投出去的那一部分的钱,你依然享有他们的收益权。

    这已经比现实生活中存在的任何一种的现行机构,更加公平了。

    相比较现实生活中操作层面不可能实现的那种相对的民主来说,它从机制上保证了绝对公平和民主。所以我们把这个叫做超越民主。当时我看到这个东西的时候,仿佛就是在黑暗中看到一道闪光。真正有一种东西是现实中我们人类的组织协作无论如何也很难做到、但是区块链可以帮我们做到,而且保证一定能做到的。

    两行致命的代码

    这让我觉得是很了不起的东西。如果发挥想象开很多脑洞的话,能够基于这点做很多事情。然后我就给我身边所有的人讲 The DAO 这个东西,讲我对它有多着迷。当然 The DAO 里面其实也有其他的问题,有些规则设置中有很多涉及到博弈论的地方其实都有待推敲。

    当时有一个做博弈论安全研究的人就提出了一个攻击假设,里面有 12 种博弈手段可以攻击 The DAO 项目。然后他把这个攻击假设写成文章发表出来,我当时在研究 The DAO 项目的时候,就发现博弈论是一个水很深的领域。

    我还在我的个人博客里把这 12 种 The DAO 的攻击手法,把它全文翻译成中文(链接:http://t.cn/EZy5UFj),在以太坊爱好者社区和以太坊世界里到处推广,让大家都知道 The DAO 其实背后的这些问题的价值,让大家意识到,当你用一个更好的工具的时候,其实背后是有 Trade-Off 的,有很多东西要权衡。

    尽管如此,我觉得我看到了 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 的开发,彼时 imToken 处于开发早期阶段。记得当天下午突然在以太坊爱好者的中文群里面,V 神突然发了一句话,说 The DAO 被黑客攻击了,钱正在被黑客拿走,最后有可能一分钱都不剩。

    当时我第一时间就看到了这个信息,然后我还在办公室里面跟所有的人讲这个事情,感觉有点像玩笑,因为是太大的新闻,第一时间出现的第一新闻在第一现场被你看见。

    然后 V 神的截图,就被传的朋友圈和网络环境到处都是,在那个时候你马上回去打开交易所,就会看到以太坊的价格是以一种自由落体的方式在暴跌。

    如果我记得没错的话,以太坊的单价大概从一百二三十块钱人民币,跌到了四五十块。而且越是跌到谷底的时候,我身边很多小伙伴越是抱着绝望的心情,快速拼命地在抛售。大家都蒙了。

    因为当时我在看 The DAO 这个项目的时候,早期是很兴奋的,所以大概投了两三千个ETH,我身边每一个小伙伴也都投了蛮多的,因为它很安全,你任何时候都可以把你所有钱都拿出来,只要你愿意。所以大家都愿意把自己所有的资产全投进去。

    我记得当时整个办公室都是一种很焦灼的状态,所有的人都拼命的在各个地方打听最新消息,因为抛售已经来不及了,你的币不是在交易所里,你的币是在 The DAO 里面,The DAO 被偷了以后你拿不出来。

    后来V神是在一个很关键的时间点,突然发了很短的一篇文章,说事情可能没有想象的那么糟,第一点是 THE DAO 被偷的钱只占总额的 30%,黑客就停手了;第二是从 The DAO 偷出来的钱其实是被转入到了 The DAO 的一个子合约中,这个子合约根据规定有一个 28 天的锁定期,在锁定期之内,黑客拿不到这笔钱。

    两种选择

    第一个是我们可以选择 Soft Fork ,即软分叉,把这笔钱永远锁定。第二种方式就是通过 Hard Fork,硬分叉,去把这些钱从被盗的合约中搬出来,救回来。

    当时 V 神发的这个消息起到两个效果:第一个效果是让大家知道情况并不那么糟,钱还在那,黑客暂时拿不走。第二个效果就是给出了方案,通过分叉是可以挽回的。关于分叉的问题。当天晚上 V 神发出这个消息后,几乎所有人都舒了一口气,二级市场的表现也是马上止跌企稳。

    在这里面,你能看到 V 神作为以太坊的核心领袖在那个时间点发挥的作用。

    第一时间站在前头,第一时间给大家一个信心和定心丸,然后告诉大家非常非常明确的信息,告诉大家这个事情会朝什么方向发展,有哪些可能性,并且做到了让大家一以贯之的信任自己。

    当时几乎所有的人都在谴责黑客的行为,大家也开始去讨论关于分叉的事情。软分叉是一个相对比较容易做决策的事情,在社区几乎没有什么反对的情况下,大家都愿意同意软分叉,把这笔钱先所锁住,至少不会便宜黑客。

    而这个时候黑客发出了一个新闻,说软分叉是不对的,他不希望软分叉,他愿意拿出被盗总额的 1/3,也就是近 120 万以太坊,作为奖励,奖励给那些反对做软分叉的人。黑客同时他也申明,他只是践行了「Code is Law」的原则,并没有触犯任何法律,所以他这个钱是他该得的,网上甚至有这样一篇挑衅的檄文,讲得言之凿凿。

    大家当然并没有理会黑客。当时官方很快就发了一个版本,这个版本将针对所有发送到黑客盗币合约的交易全部被处理为无效。激活这个版本的方法是,所有的矿池去修改预设的出块 GasLimit 的数值,如果超过一半以上的矿池节点的预设 GasLimit 低于某个阀值,则视为所有的矿池和共识节点同意这个软分叉,这个软分叉将会被即刻激活。

    软分叉在毫无争议的情况下,快速被实施并激活。然后在这时突然爆出了一个漏洞,这个软分叉是有 Bug 的。因为任何正常的地址朝这个地址发出的所有交易被视为无效,也不会扣除 Gas 费用。

    而在不会扣 Gas 的时候,黑客可以拼命地朝着这个地址发出海量交易,海量的交易会阻塞全网,而且没有任何成本。这个就是给黑客留下一个 DDoS 攻击的可能性,被 DDoS 是一个很糟糕的结果,无成本的攻击方式让全网络的交易阻塞,挖矿节点无法处理其他正常的交易,这是不可接受的。

    所以在软分叉后,这个问题立即被暴露出来,大家第一时间就拼命地 Roll Back,回滚到分叉前的那个版本,这相当于宣布软分叉失败,并且软分叉失败的这个问题让当时的社区一下就炸了。

    软分叉失败,社区炸了以后,只能走最后一条路,就是硬分叉。而采取硬分叉的话,相当于做一次协议向前不兼容的协议升级。

    硬分叉有两种,一种是带争议分叉,另外一种是不带争议分叉。

    常规的软件升级这种,先社区已经达成了共识,然后矿工升级,这是完成一次硬分叉的典型流程,这是正常的不带争议的分叉。关键在于,这次硬分叉是因为抢救参与 The DAO 的 15% 的以太坊的流动资产,那这次硬分叉是不是有争议呢?

    这就涉及到人类长久以来一直在争论的,关于过程正义还是结果正义这一话题的讨论:是不是只要这个钱是被黑客偷走的,我们就该拿回来?拿回这笔钱的方式,是不是违背了区块链的核心理念,「Code is Law」的理念?

    V 神作为社区的 Leader ,在当时也扮演了一个重要的角色。我觉得有一点他做得非常好,就是在要不要分叉这件事情上,他是力主把这个决策交给了社区,而不是由他自己来决策,但是因为放弃了自己的决策权,他因为他背负着巨大的压力。

    分叉是问题,不分叉也是问题,但是如果由他选择站到哪一边,都有人赞成,还有人反对,这对于他、对于 The DAO、对于以太坊来说,都是不可估量的另外一种形式的伤害,所以 V 神把决策权交给社区,其实选择了伤害最低的做法。

    他当时表态说区块链是社区的,这件事情要留给社区,由社区来决定要不要做这些事情,然后不管社区做出什么决定,他都会坚持继续为以太坊项目做贡献。

    这点我非常认同,但是在这个过程中很多人会指责他,尤其是那些因为黑客导致利益损失的人。

    The DAO 中 30% 的以太坊被偷走,真的是一件很夸张的事情。当时我们在以太坊爱好者社区的网站上专门开了两个帖子来收集观点,一个是同意分叉,一个是反对分叉。

    我们查找国外各个论坛关于同意分叉的各种观点,我们第一时间把它翻译成中文,然后把它汇总到一个索引帖里面,再把反对分叉的观点汇总放到另一个索引帖里。有同意分叉的观点和反对分叉的观点,也有对反驳同意分叉观点的观点和反驳反对分叉的观点的观点。

    这些观点我们全部把它们发到以太坊爱好者社区的一个官方微信群里,然后再从这个群扩散到很多很多一些其他群里面。

    在那个时候整个中文社区对此事的关注也是空前绝后的,每个人很关心这件事,非常非常多的人参与到这件事的讨论当中来,这个讨论涉及的意义和层次非常非常深远,有些讨论像是吵架方式,而有些讨论是非常非常理性的。

    我们当时公司内部都有不同的意见,我是一个利益相关者(笑),我有大量的钱投在里面,所以我是希望能够实施硬分叉把钱找回来的,首先我是想弥补损失,我自己是有巨大的损失,所以我很心痛。其次我很担心,因为当时反对分叉的声浪巨大。

    你能很明显的感觉到,同意硬分叉的人大概占比是 10%,而反对的人大概是 90%。

    十个人里面你感觉有九个人在讨论说我要坚决的抵抗分叉,只有一个人说我希望同意分叉。我自己很焦虑,我担心的就是如果最后的结果是不分叉,那大家损失很大。但是分了叉之后,那么多反对分叉的人将会离开这个社区,这又会对以太坊社区产生更大的影响。

    要不要分叉这个我反复想来想去,我甚至一度说服自己要接受不分叉,因为不应该由于这件事来拖慢以太坊的发展节奏,因为以太坊这个生态更加重要。这个事情最后就演化成为一个问题,那就是社区究竟如何去得出一个结论。

    让我们来投票

    当时我们在上海有一个朋友,就是现在的币乎创始人咕噜。

    秘猿在当时已经在做 CITA 第一版的原型,当 CITA 的原型做出来,就已经证明了整体架构能实现非常高的性能,于是咕噜帮助秘猿做了一次产品原型发布会。那场发布会特别有意思,当时V神也在现场,发布会的主持是我。我记得印象很深的是,现场有人问V神关于分叉的话题,他当时面露难色的说这是社区的事情,而不是他来决定,你能直观感受到他当时面对公众的那种艰难。

    那次秘猿的 CITA 发布会很成功,我记得当天晚宴的时候,咕噜过来跟我聊天,说他想做一个投票工具,他已经有了想法,但他手上没有开发者,问我这边可不可以做,我当时就答应了。

    我们之后就打了个电话,在电话里面聊具体的细节,他就给我出了一个  idea 。

    当时的情况是,如果社区要投票,最理想的情况是去用自己的 ETH 去投票,你可以做两个智能合约,一个代表同意,一个代表反对,然后让大家把自己的 ETH 投到合约里,去算每个智能合约里面存了多少钱,就等于有多少票,投票结束之后就把钱还回来。

    但其实这个过程是有问题的,第一是,如果你的投票范围非常大,它无异于帮助这个市场锁定了大量的流动性,你其实是有点像在影响二级市场的价格。

    所有投你票的人,在票被解锁的那一瞬间,这些流动性被释放,二级市场的供应量增加,价格势必下降。那么不投票的人,投票解锁前在市场上把自己的币卖掉,然后等到你结束的瞬间,再用低价把币买回来,他可以完成一次短期可预期的套利。

    投票的人的损失,不投票的人通过确定性的消息在二级市场获利,这是一个不合理的事情。

    第二个就是 The DAO 事件,大家一朝被蛇咬,十年怕井绳,不敢再把币打到一个第三方的合约里面去了,那个时候大家是谈合约色变、谈安全色变。

    别跟我讲合约安全。你这次发现的是个语法漏洞,假如它本来就有系统安全的漏洞,又被偷了怎么办?要再来一次分叉吗?一次分叉都这么艰难了,你让所有人再去走两遍,就很尴尬。

    当时咕噜给我出了个主意,就说你能不能这样处理:用户投票的时候,就是给你的合约转一笔钱,你收到后马上把这笔钱退回去,然后反向查询一下对方的地址,计算一下对方地址上的 ETH 的余额,这个余额就代表他的票数,把所有余额加在一起就是总投票数。就这么简单。

    我一听,对啊!这是很好的一个办法。而且这个可操作性很强,当时在做 imToken 的时候,我是负责 imToken 整个后端的开发,也使用了类似的链上交易和链外统计的功能。所以我对这一整套东西非常清楚,知道该怎么做。

    然后我周末用了一天的时间就把这个程序写好了。礼拜一的时候,我找 imToken 一个做前端的小伙伴阿树帮我做了一些前端工作,给我的页面增加一个饼状图表,能展现投票 Token 数量多少,Yes 和 No 饼状图的占比是多少。这个投票工具就是后来的 CarbonVote.com

    Carbon Vote,查看票数详情可参见投票页

    这个投票工具发布之后,马上就引起了很大范围的讨论。开始是有人反对这种投票工具,说这个投票工具是有问题,然后马上就有人说你理解错了,这个投票工具不锁币,你放心投,代码我已经看过了,合约代码很简单,就一行代码,你给我打多少钱,我给你退回去,很安全。而且文案里面已经讲清楚了具体怎么去投票,所以很简单。

    你甚至可以做一次转账额度为零的交易,你给我做一次转账,这个交易中即使没有钱,我也能追查到你的转账地址,你大概只要付 4 万左右的 Gas 费,这是很小的一笔钱,然后就完成投票了。

    很多人亲测后,转账之后票数是增加的,结果可以实时反应出来,而且有搞技术的人看了代码也没有问题。大家就在 Reddit 上面开始讨论结果,一下子很多人就大量的人认同这个方案,因为它简单安全,不锁币。

    之后就有很多很多人帮我在全世界范围内去推广这个事情,而我在做这个网站的时候,离那个 28 天是否分叉的最后期限也就差个不到十天的时间。

    那时候就有人开始出来说,你个投票工具是有问题的——我通过交易所给你做一个 0.001 的转账,因为交易所是生成的热钱包给你转,结果你一下子就记录了交易所的所有的币,所以这个其实可以被人用来操纵交易所投票。

    而且他也亲测过,投了 Yes,马上投了个 No,两边那个票数就有巨大的落差,他其实是可以去操纵大交易所的投票的。一位用户用非常绅士的方式在 Github 上给我提出了这样一个疑问。

    那时候我说我对这个问题没有解法。我只能想到一个方法,你们能不能告诉我哪些地址属于交易所?我把这些大的交易所地址从我的投票统计中给它摘出去。然后我很快的做了升级,把这些来自大地址的币全部过滤出去。

    我还在网站上放了一个列表,告诉大家说我统计的这些地址上的票数特别多,但是已经被我过滤出去了,而且标记这些地址是属于哪一个交易所的。我希望其他用户能发邮件给我告诉我哪一个地址属于哪一个交易所,让我继续过滤掉更多来自交易所的投票,而且我还希望说,如果你不相信我的统计结果,你自己把这个代码给跑起来,可以交叉验证能不能跑出跟我一样的结果。

    交易所地址

    在 Reddit 上不停的收到各种小问题的反馈,英语单词的问题、语法的问题、句子的问题、表达的问题、代码的问题、逻辑的问题、交易所的问题,噼里啪啦在两天之内就一下子把所有问题很快都解决掉了。

    这个投票工具因为非常 Straight Forward ,所以开始在 Reddit 上变得非常流行,它的帖子就顶在以太坊版面,位置非常高。

    很多人也开始探讨 CarbonVote 这种投票的治理模式,并且专门有人发了类似《 Carbon Vote 教会了我们什么?》的文章,以及其他类似的讨论,包括如何通过智能合约投票的方式实现社区民主决策,以及投票的公平与效率如何取舍,等等各种相关的话题和针对本次事件的反思。

    Reddit 上的评论

    这个投票流程是这样的,你投了 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 标记,在某个固定高度,如果决策是硬分叉,那么这笔钱就会被挪到一个安全合约当中,如果决策是另外一个方向的话,这笔钱就会被黑客拿走。

    至于这个钱会不会被黑客拿走,取决于那一个区块高度时刻我做的 CarbonVote 的投票结果,而这个投票结果在官方发那篇文章的时候已经非常清晰了,几乎所有人都同意分叉,只有少部分人反对,最后一定是 hard fork 的。

    从官方发表文章之后,只剩下最后一个问题:未来的 24 个小时,有没有可能会出现很多人去把 Yes 票挪到 No 里面去,或者有人能不能通过控制大额的票仓去想办法去操纵这个投票,去产生一次本来是 Yes 最后造成 No 的结果?

    后来事实的结果证明,从官方发布新闻到最后,Yes 的投票量是继续在增加而不是 No 在增多,也就没有那种非常歇斯底里、反对分叉的人通过其他手段搞到更多的以太坊投到这里面去。

    这次投票结果最后是安安全全地做了一次 Yes 的分叉,然后把钱全部锁到安全票仓里,再通过后面新的技术手段把这个钱都拿回来了。

    从所有的参与者来说的话,是皆大欢喜,没有人受损失。但是呢,官方团队背了一个比较大的锅,这个事情就非常非常尴尬。

    这事就很有意思,当时大家都以为都结束了,但是实际结果是「Code is law」  的原则被打破了,社区的意愿改掉了「Code is law」的结果。这是区块链历史上第一次由人的意志去改变了区块链本身的意志。

    这代表着区块链不可篡改,不可伪造的神话被打破,而且是在以太坊上。

    ETC 出击

    大概是 Hard Fork 两天之后,有一家叫做 Poloniex 的交易所突然宣布说他们不认同这一次 Hard Fork,他们将会去维护原来的那条链,并且在他们的平台上所有持有以太坊的用户将会等额的持有原来的那条链的币,他们起名叫 ETC 。这个事情马上引起了那些投反对票的人的另外一种层次的高潮。

    而 Poloniex 是这次活动最大的赢家。它通过产生 ETC 获得了大量的流量和大量的关注,赚了盆满钵满。

    但是因为其他的交易所在这三天过程中没有太多的考虑到这件事情,就出现了另外一个情况。以太坊网络在那个时候的协议还没有升级,还没有加入一个很关键的交易参数叫 Chain ID,导致的结果就是那段时间,如果交易所不做预防措施,所有的人在交易所里做一次 ETH 的提现操作,这一笔 ETH 的转账交易都可以把它保留下来,然后拿到 ETC 的网络去做重放,当重放之后,你除了收到 ETH,你将会收到同等数量的 ETC,有人通过把 ETH 打进去,然后再提出来,再打进去再提出来的方法,从交易所套出来大量的 ETC。

    这样的话,你是能源源不断地拿到大量的 ETC。只要那个地址放在 ETC 网络上面,就能马上把 ETC 兑现出来,然后再把 ETH 转回去。交易所还要负责任,把你所有在交易所里面存量的 ETH 配比等量的 ETC。也就是说,很多用户是通过这种方式揩了开交易所的油。

    在那个很短的时间里面,在网络还没有引入防重放攻击之前的时候就遇到这种问题,大量的交易所因为这件事受到很大的损失,有一家在广东中山的交易,它就是因为重放攻击的 ETC 损失不承认,对于 ETC 重放给用户造成的损失不予赔偿,于是它的用户都炸了。

    我记得云币网当时宣称因为重放攻击导致 50 万美元以上的损失,但是云币网就认了,照价全部赔偿给用户。反正云币网一直从来都没有站在用户的对立面去过,所以它认了,然后就停掉了 ETH 的交易,直到有了解决重放攻击的方案才再次开启。

    官方团队发现了这个问题之后,就出了一个快速的应对方案,升级客户端,在交易里面增加了一个新的参数 Chain ID,对 ETH 和 ETC 用户用不同的 Chain ID 的方式来确保未来的交易都没有重放攻击的风险,这是之后的故事了。

    ETC 不是分叉产生的,而是通过交易所催孵化出来的一个人为的项目。所以之后一旦有些什么风吹草动,再有什么链硬分叉的时候,交易所都会把这个交易停掉,在确保没有重放攻击的时候再把这笔交易打开。这都是吃一堑长一智的经验。

    其他细节

    接下来展开的是问答环节,这其中有大量社区治理和中心化去中心化的哲学思辨,大家可以细细品读。

    问:Daniel 你可谓是完整经历了 The DAO 事件并且做了很多贡献,请问你从中有什么感受?

    答:我是 The DAO 的投资者,投了很多钱,我也做了 CarbonVote,然后 CarbonVote 被官方选中,经历过这个事件,得到了两个很有趣的基于社会层面上的经验。

    第一,就是在人群当中,当你想要去推进一件事,并且发布了一个制度安排,有人会因此受益、有人会因此受损的时候,往往获益的人不会站出来,振臂高呼,发出非常大的声量,说我非常认同这个制度。反而只有受损失的人会大声疾呼,这件事情很傻 X,并且强烈反对,赞同的人是不发声的。

    很多本来很好的事情是被那些少数人反对、于是取消或者说扭曲改变。人们本质上其实都是脚来投票的,但是很多事情最后因为反对的声量盖过了认同的声量,本来一件很好的事,对大多数人有益的事情,最后被变成了为了保护少数人的利益而去放弃掉大多数人利益的事情,这种事情在人类历史上比比皆是。

    这次投票的结果就是在投票之前你会发现全部的社区到处都反对,感觉整个社区不可能会认同这次 Hard Fork,没有一丝希望,事实结果证明是 20 比 1 的比例,这么多人希望 Hard fork,而且是票在那里,拿脚投的票。

    问:稍微打断一下,我们想问一下,当初投到 The DAO 里面的钱可以拿来投票吗?

    答:不可以,这是一个很大的一个 Bug。就是真正的利益相关方的这些人,他们的币都锁在里面,所以没法投票。我也没有办法。

    不应该这么说,如果你让我重新去想的话,我可能会想出这样一个办法,给所有投了 The DAO 的人空投一种 ERC 20的代币 Token,让他们获得某种投票权,然后用他们这个投票权来去代替他们被锁定的 ETH 来去做投票。

    但是在当时那个阶段的话,对于我这种 One Man Project 来说,这个复杂度有点过了。我需要去分析找到所有人在 The DAO 里投的以太坊的数量,然后根据这个数量空投 ERC 20 的代币 Token 到他地址上,然后空投完了以后还要教他如何用 Token 来投票,我的投票不仅要支持 ETH 投票,还要支持 ERC 20 的 Token 投票,而且还要把票数都算准,这个事情对当时来说太复杂了。

    所以也就是说真正的利益相关方,也就是 15% 的利益相关方的投票权,被我给放弃掉了。

    我是让剩下的 85% 的人来决定这件事情的走向,所以其实非利益相关方帮了 The DAO 的投资者的一个忙,非利益相关方里面有可能存在利益相关也可能不存在,但是这个也没有办法考证的,当时确实有人问过这个问题,但是以当时的技术手段我确实做不到了,时间也很短,因为大概只剩下十天不到的时间。

    另外一件事情就是,投到 The DAO 里的票数是 1150 万,在外面可能还有 5000 万,6000 万甚至7000 万的可投票 ETH。但是真正参与这次投票的票数并没有那么多,也就是说真正参与民主决策的人其实是少数。

    我觉得这分两种,一种人是有些人不愿意投票。还有一种人是看到 Yes 就这么多了,我投 Yes 也没那么大意义。因为我是希望它是 Yes 的,结果大家都投 Yes 我就不投了。

    这些其实都是假设了,但是从事实结果来看的话,真正参与到这个民主决策的是少部人。也就是说,第一,是少部分人决定了整个网络的命运;第二,在少部分人中,大家也是用脚来投票的,投票结果是跟整个当时的社会舆论完全颠倒过来的。

    这里也给了我一个经验,以后再去调查一件事情的民意的时候,不要看有多少人赞同,多少人反对,赞同的人是沉默的,反对的人才会喊出来,所以这是不客观的。必须得用脚来投票,而不是靠舆论。

    有一些民主国家在投票的时候大家会看民调,如果民调已经很高的话,那就算是支持的,也有可能不去投票了,结果可能一不小心就反过来了。

    有点像英国脱欧这种黑天鹅事件,很多人到最后他没去参加投票,第二天说英国脱欧了,结果那些没有参加投票的人还在查到底脱欧是什么意思,脱欧意味着什么,其实绝大多数人是不想脱欧的的,但是莫名其妙被少数人决定了命运。

    问:接下来的问题,我们刚刚提到了一些关于社区治理的相关事情,你曾经做过 Ethfans 和 RubyChina,经历过很多社区运营,那么对你来说,你希望未来的社区治理会是一个怎么样的面貌?

    我其实在方面没有自己的观点吧,至少我觉得我对这些东西的思考还不是那么深刻和透彻,但是我相信历史的选择,在社区治理的这件事情上,在现代的民主制度,决策流程是经过无数的迭代产生的,所以我觉得现在是把一些相当成熟的民主制度拿过来用就好了。

    比方说代议制民主制度,它追求大多数人的利益,相对来说去放弃少数人的利益,在不同的层次上博弈,尤其是在精英层次上,大家互相去博弈,精英层的博弈结果是让绝大多数人普通人获益,这种制度可能是我认为是比较好的方式。

    问:这件事情是黑客造成的 ,这件事情给智能合约和区块链带来了很大的经验和教训,那么你认为黑客在区块链里面扮演了一个怎么样的角色,或者说,你认为你希望黑客在其中扮演一个怎么样的角色?

    答:首先,黑客是不可能杜绝的。我相信一个逻辑,人群中不管是 100 人还是1000 个人,100 万个人,多少人当警察,多少人当小偷,多少人当好人,冥冥之中总是会有一个比例,也就是说,黑客永远会存在,它是一种现象,它存在是合理的,只不过在这个过程当中,黑客对想要提供服务和消费服务的人来说,无形中增加了额外的成本。

    但是这种成本的存在,是让你去思考和在做规划的时候,意识到安全是不可忽视的一部分。

    黑客有时候确实是会让事情变得不便利,但是黑客也会让整个系统变得更强大和更健壮,有利有弊。对它的客观存在我是认同的,我不认同基于某种制度,可以消灭掉黑客的存在,我觉得这个是不合理的。

    有一个特别有趣的故事,你们有没有看过黑客帝国,看到第三部的时候,电影其实已经进入到一个形而上的伦理探讨了,救世主 Neo 不是由系统出现 Bug 产生的,而是那个造物者造出来的,造物主造出一个反面的角色,用来帮助自己完成进化和升级。

    我觉得黑客帝国里面的黑客形象,就是帮助系统更健壮的一个角色,所以我觉得特别是适合来解释 The DAO 里面的黑客这个角色。这个电影到最后你会发现,希安,救世主 Neo,一切都在造物者的算计当中,他保留希安,是为这个系统的升级和进化留下一个可以被刺激,然后改进的余地,所以我的态度是承认它的合理性。

    问:经历过这件事情之后,你是如何理解中心化和去中心化?

    答:我把中心化理解为一个体制,体制化是一个增加效率,降低成本和组织化、规范化的手段。中心化对我来说是一种体制,相对的去中心化你也可以把它看成一个体制。

    中心化是秩序,中心化是规则,中心化是规范。去中心化的本质是混乱,你想象一下,区块链的本质是不可预测,是混乱,是没有人定规则,所以没有规则存在,而且他也不要求产生秩序。

    一个系统的本质是混乱,一个系统的本质是秩序,谁好谁坏?好像我们感觉秩序是比混乱要好,但是其实不是这样。

    混乱的体质有它存在的价值,混乱会涌现出一些特别创新的东西,这些东西是在秩序的世界当中不存在的,或者是没有办法产生的。比如说一个例子,融资这个事情,在秩序的世界中,有法律,有条款,有各种各样的制度来保证融资过程中资方和项目方都受到法律的约束,然后当有分歧的时候,可以去找法律仲裁,而在混乱的制度中,涌现了一个东西叫做 ICO,它突破了一切的限制,他没有法律约束。

    但是 ICO 有极高的融资效率,ICO 这种融资方式的存在对我来说并不是有多么厉害,而是 ICO 这种方式对既有的秩序和世界中的融资模式产生了巨大的挑战,现实生活中的融资模式决定了资方是更专业,更有话语权的,反而那些寻求融资的项目方跟资方比起来,角色很不对等,所以创业者往往是很受资本方的欺负,很不公平,当他可以选择通过 ICO 这种方式去融资的时候,他就有了平衡和对冲资本方的手段。

    去中心化涌现出的这种东西,去挑战了制度化体制中的一些既有的框架和一些制度,然后让这些制度的建设者和设计者不那么的肆无忌惮,同时也刺激它进步和演化,而这种进步和演化也要提升了中心化制度中的竞争优势,可以去跟混乱的制度中产生的新东西去竞争,导致的结果就是 ICO 这个模式本身会演化,ICO 在挑战现有世界中的模式,导致现有世界中的融资模式也在演化。

    到最后两种方式的竞争结果应该是彼此促进,但是我希望永远有另外一种制度,永远有另外一种模式在挑战这个制度下的某些东西。没有挑战才是最大的问题,所以我觉得一定要坚持保留一种东西能够去挑战另外一种东西的可能性。这个可能性的存在,才能产生互相促进。

    这对我来说是意义最大的,虽然基于混乱的制度很多东西效率非常非常低,但关键是两种东西必须同时存在,并且相互竞争。我觉得有相互竞争的情况下,这个世界一定会变得更好,或者更高效。

    问:是不是有点像凯斯和元老院的关系,当一个人权利过分大的时候其实就会引起系统的崩溃,把权力关进笼子,但是钥匙如果还在权利手里,那么其实意义也不大。

    有权利的制约和分立的情况才更稳定,所以一定有一种东西去制约,而且在制约的情况下一定能更持久,互相去促进和进化,这个是我觉得区块链和围绕区块链所存在的去中心化的体制存在的意义,它帮助改进了中心化的系统。

    本文由橙皮书 X 头号玩家联合出品。我们希望捕捉区块链领域早期的技术极客,对加密货币世界而言,他们不仅是这个行业的第一批忠实玩家,也是后续推动行业发展的重要建设者。我们希望透过这批头号玩家的极客印象,为读者挖掘更多稀缺的、有价值的优质故事。

    相关文章

      网友评论

          本文标题:区块链历史:第一次「虚拟国家的全民公投」,是怎样把以太坊从鬼门关

          本文链接:https://www.haomeiwen.com/subject/hlnbtqtx.html