分叉的真相-Alex Van De Sande-以太坊首席设计师如是说

月亮🌛   |     |   2528 次阅读

Alex Van de Sande
以太坊首席设计师,Mist主要开发者
Toya译
原文链接:https://medium.com/@avsa/the-truth-about-the-fork-fd040c7ca955#.r9qwr3o2k

分叉的真相

我尊重以太坊经典的哲学立场,事实上我是公开反对分叉的前几个人之一,也竭尽所能的为避免分叉的其他方案提供帮助。然而当我感觉到绝大多数人支持分叉(在参与制作这些支持的工具之后)以及在尝试理解这些复杂争论的两边之后,我接受了- 并且仍然接受大多数的决定是一个好的决定。

事实上,如果分叉仅仅是一个学派纷争,我会更加能够欣赏自由市场去解决两个哲学和政治立场争端的这种美,也再无需赘言。但是,我深切的关心事实真相。

在支持以太坊经典的社区中一个故事普遍存在。其中以太坊基金会被描述成为了经济利益推动分叉的坏人而DAO的攻击者被奉为解放的英雄。 在这个故事中,DAO懒散的代码将会带来的毁灭对任何看它的人来说一目了然。在这个故事中,所有参与的人都无能并且不乐意去帮忙。

这些故事不但是错误的,而且是可被证明的、公开的错误的,但是它们被流传开来,因为它们是容易被讲述的故事, 或者因为其中一些讲述者们不够知情或别有用心。

错误主张之一: 以太坊基金会或其的成员具有促成分叉的经济动机


许多基金会开发者(包括我在内)已经公开了他们DAO券的持有情况。大多数(包括我们的执行总监 Ming Chan)没有持有DAO,有些人持有很少量的DAO. Many have openly criticized the DAO. 很多人曾公开指责DAO. 当然,也可以辩论说我们可能在说谎,或者说大量持有的人并没有公开自己的持有,然而在我们进行过的所有的内部,私人讨论中,从来没有人提起过“救救我的持有吧。" 或许有个影子角色一直躲在开发者的背后,影响着基金会的决定,但是他们肯定不是任何一个我聊过的开发者。

即便是那些DAO拥有者,他们持有的DAO相对于他们持有的以太币来讲数量要小得多。 那个精神正常的人会拿自己99%的资产去冒险,拯救自己1%的资产呢?

从我的经验中,我看到了相反的东西。当白帽需要DAO币去挽救剩下的DAO的新闻传出时,他们中的大多数在不知他们的DAO币是否会在运行没有经过测试的程序中烧光甚至白帽身份未知的情况下,自愿捐出DAO币,只是为了拯救DAO。

错误主张之二: 分叉的决定是基金会违背社区意愿的自作主张

在分叉上开始运行的第一个客户端是Parity,由Ethcore开发,与以太坊基金会没有关联。 基金会开发的两个客户端,C++(在分叉后才开始在一个兼容版本上运行)和Geth,都是在相对晚的时间才加入分叉的。实际上Go的开发团队因为花太长时间去搭建和测试代码而被严厉指责了。

Vitalik确实是在DAO被攻击之后最早提出分叉的人之一,但是那当时只是被看作许多选项中的一种。在DAO攻击发生后这冗长的30天之中参加过以太坊社区任何活动的人都可以证明,分叉是一个极具争议的话题。我个人帮助搭建了Stake Voice,一个用于帮助衡量社区对于分叉真实意见的 Mist App。它基于由ether stake建设的Ethe Signal论坛上的一些代码。Carbonvote 由中国以太坊开发,在同类工具出现几天之前发布,变成了最受欢迎的投票工具。虽然Geth有个初始选项,但是Mist和官方客户端Ethereum Wallet没有通过随机窗口选择客户并且迫使他们做出选择。Carbonvote并不是单一衡量指标,个人、公司采访,Reddit 投票,Twitter投票,所有可测量的信号都表示分叉在社区中有很高的支持率。这点在分叉那天得到了印证。我们顷刻之间就获得了90%的hashrate和市场。社区里几乎拥有了完美共识,反分叉是少数派。
基金会给社区的重复呼声提供了一个选择。

错误主张之三:发行的全部过错在DAO的创作者

DAO发射之日,它被业内前沿专家们、大众以及一个私人安全审计誉为一个势不可挡的成功。被攻击之后,它却被马上被责难为松散的代码,马虎的建设以及缺乏审核。注意到这个不同了吗?

DAO代码里面的两行让这个DAO攻击成为可能。的确,如果这些代码当初不是这么写的,这次攻击不会发生。但是虽然首个重入行为曾在2014年一个名不见经传的博文中被描述过,对这个问题直到MakerDAO的开发者重新发现一个相似的攻击可以允许他们吸干自己的合约才被广泛的理解。因此,此特殊顺序的重要性是不为任何领域内专家所知的。如果官方语言Solidity处理嵌套的方式有所不同或者的话,或者它往.call() 函数里面送的GAS数量不同的话,攻击也都不会成为可能。如果允许嵌入数学上的不变量(比如没有人可以得到比拥有更多的)形式验证工具存在, Bug会被发现。我看到过这个bug跟SQL injection放在一起比较,SQL injection 意料之外的行为在某一时间点影响了大多数的网络应用,然而当它出现在网络开发者的公众视野之后,其实只是一个容易避免的问题。

因此虽然可以说历史上最大众筹项目的失利是短短两行代码造成的,它同时也是一系列仅仅8个月大的生态系统中处理全新领域知识的不成熟的工具造成的。DAO最大的失误不是有缺陷的代码,而是在平台仍然太年轻的时候发射。有后见之名的人很容易指出许多可以有效限定项目范围以及体量的举措,然而真相是没有人预料到DAO会以如此惊人的速度变得如此惊人的大。DAO是以太坊第一个病毒式传播的轰动事件。

错误主张之四:没有做出任何其他的避免问题的举措

这个批评通常有两种风味:要么监管者们/开发者们/slockit 在被提醒之后没有做出反应,要么他们在根本不应该干预时做出了太多反应。作为一名监管者,一名以太坊开发者,以及许多被波及其中的人们的朋友,我见证了事件中的许多关键时刻,因此可以放心的说以上的说吧一点真实性都没有。

DAO的第一次发行是由Emir Gun和Vlad Zamfir发起。监管者们建议延期偿付对此做出回应,并且没有通过任何提议。在重入攻击在MakerDAO上被复制之后,很快有人指出相同的方式可以用来攻击DAO的酬谢账户(一个空账户),这导致了Slock.it团队发表他们如今臭名昭著的博文“没有资金有风险”。当时几乎没有人理解bug的全貌,因此指导攻击发生之时没有人意识到它可以被用在分岔函数上。同时明白一件事情非常重要,就是即便有人负责人的公开了这个问题也完全有可能DAO已经无力回天。在首例重入问题发现之时,DAO已经上线并且拥有大量资金,监管者已经没有力量阻止它(奇怪的是,时有监管者们被指责为拥有太多力量)。将DAO吸干会立刻暴露这个问题而升级则至少会花两周。在这个故事中最被指责的人们往往是那些为了拯救社区资金几个月日以继夜无偿工作的人们,而指责他们的往往那些没有担风险,没有尝试去做之前没有被尝试事情的人们。在一个月的区间之中,白帽攻击、软分叉、区块链分析等等上千的新工具被开发出来,为了拯救能被那些拯救的。硬分叉是最后的一道防线,由于紧迫的时间限制每个人都试着用最简化的方式去完成它(因此我们决定不去处理重放攻击问题)。

不分叉并不是唯一具有逻辑一致性立场。以上我提出几点不是观点,而是简单的事实,用来证伪那些用来指责我们决策的错误叙述。你仍然可以用新的故事来反对我们的决策,但是在你做之前,我希望指明分歧来源之处,它或许会让你意外。

我收到了很多关于以太坊主页第一个短语的批评,因为硬分叉会违背“代码为准”的保证。我撰写了这个短语并且仍然站在这个短语之旁,因为我仍然相信这个景愿。我不喜好语义学方面的争论,认为维基百科应是讨论像“bug”、“攻击者”、“小偷”、“黑客”之类词语的定义的合适地方。最终而言,制造一个不按任何人预期却“代码为准”的合约的好处是什么呢? 一个旨在制造“智能合约”的技术,如果它的专家们既无法保证被制造出来的是智能的也无法保证是合约,该技术的价值又在哪里呢?DAO是以太坊迄今最大的一个项目,它向成百上千的新人介绍了由软件自动管理资源的全新概念。因此以太坊基金会理应参与一种,如此级别的bug的影响不是被窃金钱的数量可以衡量的,关键在与它将如何影响公众对整个生态系统的认知。

如果你在发明远洋巨轮技术,然后泰坦尼克发生了,你不会参与吗? 如果你在制造最近的喷气式引擎,你难道不应该参与每一个动摇公众对于航空产业信心的新飞行事故的调查嘛?

当然,你可以持个人主义立场 - 如果你没有直接责任就不应当多管闲事。 你没有建造那个飞机,你没有做出在冰山季节横跨大西洋的决定 - 你为什么要关心?但这不是一个我相信的立场。

我并不是不关心区块链不可篡改性。

事实上,分叉给我们上了十分宝贵的两课:
• 即便99%的矿工,用户甚至开发者想要抛弃它,即便只有很小的少数人支持,区块链可以对抗改变、茁壮成长。
• 如果足够大的社会共识存在,新的社会共识就会产生,并且拥有比原先的链更大的价值。

与比特币不同,以太坊不是一个由传说中授予我们区块链然后又泯灭于历史的造物者创造出来的。我不迷信于某个不可篡改的区块链,而是相信各式的区块链们,一种可以帮助我们对抗政府腐败,通过软件管理公众财产,减少浪费,增加市场透明度的技术。以太坊被一群有血肉之躯的开发者创造,全部历史可以被追溯到某个在柏林小办公的一点。 你可以认为这是我们的弱点之一,我们太过中心化,太过宗教神秘主义,但我相信这是我们的主要力量,既我们乐意采用不正统方式方法,做没有人敢做的事,即使有时这会违背区块链的不成文的神圣教义,因为我们看到了一个区块链可能性的与此不同的景愿。

 
4 人喜欢