2019-03-21 以太坊2.0的设计目标

这是一篇关于以太坊2.0设计目标的文章。以太坊2.0描述了以太坊宏大的目标和远景。它的性能将更加完善,功能将更加丰富。

注:这篇文章是英文原作者自己对以太坊设计目标的理解,因此并不代表以太坊官方的意见。以下为编者对英文原文的编译。

每一个项目都有设计目标。它代表的是项目整体的愿景,规划和发展方向,它也是衡量项目整体成功或失败的尺度。

在2018年11月的DevCon大会上,Danny Ryan罗列了五个以太坊2.0的设计目标。这些设计目标并非无中生有,而是在社区经过反复讨论,权衡利弊后归纳而成的。

这五个设计目标(注:以下设计目标是英文原作者自己归纳的,设计目标的先后顺序是作者根据自己的喜好排定)分别是:

去中心化:其目标是为了让普通的笔记本电脑用复杂度为O(C)的资源就可以处理/验证复杂度为O(1)的分片任务(包括任何系统级的验证比如beacon chain中的验证)。(注:复杂度是计算机算法中的术语,用来描述处理一项任务所要耗费的时间,复杂度越高表明所要消耗的时间就越多)

系统恢复能力:其目标是为了让系统在节点大规模宕机或者全网被分割肢解时仍然能保持正常运转。

安全性:目标是为了利用加密和设计技巧让尽量多的验证节点在每个单位时间内充分参与验证。

简洁性:系统复杂度越低越好,甚至可以为此牺牲部分效率。

持久性:尽量为系统选择能保证量子安全的组件。如果组件暂时无法保证量子安全,那就选择容易被替换的组件。日后当有了量子安全的组件时,可以方便地将这些临时组件用量子安全的组件所替代。

这些设计目标可以解释“以太坊2.0”是“什么”——也就是它看起来会像什么,——但并没有解释“为什么”。本文将详述这些目标为什么重要以及它们将如何塑造以太坊的未来。

这五个目标中每一个都可以长篇大论。这篇短文只能算蜻蜓点水,但我仍然希望借此讲清楚以太坊未来的发展方向,并顺带提及以太坊2.0的一些新特性。

去中心化(Decentralisation)

其目标是为了让普通的笔记本电脑用复杂度为O(C)的资源就可以处理/验证复杂度为O(1)的分片任务(包括任何系统级的验证比如beacon chain中的验证)。

以太坊的根本原则之一就是永远追求极致的去中心化。在实践中,这意味着参与以太坊活动(比如以太坊1.0的挖矿)的门槛必须尽可能的低,而中心化倾向所带来的好处要尽可能少。

基于工作量证明(POW)的挖矿无法避免中心化的问题,也没有处理好去中心化的问题。我们看到POW挖矿变得越来越集中在具备雄厚经济实力,掌握着廉价电力和高效散热系统的大型矿场手里。挖矿正越来越依赖昂贵的ASIC矿机,个人已经难以承受并无法再参与挖矿。尽管存在着争议,但多数人都认为基于权益证明(POS)的共识机制就不会有这种中心化的压力。这是驱动以太坊2.0转向POS的原因之一。

这种对去中心化的极致追求主导了以太坊2.0在设计方面的每一个细节。

比如,为了彻底摆脱以太坊1.0的束缚,去年夏天,以太坊团队作出决定,将在全新的基于工作量证明(POS)的beacon chain上开发以太坊2.0分片系统。这一决定将使以太坊2.0能够支持远超现在数量的验证者---也就是以太坊2.0中的矿工(注:这段话的意思是,在不降低系统性能的情况下,以太坊2.0中能容纳的节点数将大大超过现有的系统),同时将每个验证者所需抵押的以太币由1000个降低为32个。32个以太币对于希望参与以太坊挖矿的矿工而言就是个相当低的门槛了。此外,以太坊2.0对于偶尔掉线无法正常工作的验证者惩罚也会轻很多。这将使用户用消费级的硬件设备(注:消费级的硬件设备由于性能上的限制往往无法做到100%在线工作)就可以参与挖矿。

上面所列举的这些设计细节并不是专门为了POS而定制,而是为了让以太坊2.0能够适应各种硬件节点,不需要每一个矿工都用性能强大的设备才能参与挖矿。

以太坊2.0的设计极力避免需要高性能CPU或大内存的挖矿设备。即便有的节点(比如用于网络交换或作为区块链浏览器)硬件性能强大,它也并不比其它普通挖矿设备有任何优势。相反,轻客户端协议的大量使用会让验证节点将资源聚焦用于保护beacon chain以及处理分配给它的分片任务,而只需要关注尽可能少的关键系统信息。

在以太坊2.0的设计目标中,要成为一个全节点,参与系统维护,抵押挖矿,你只需要一个消费级的笔记本电脑或小型的VPS服务器就可以。

实际上设计一个高性能的中心化系统反而很容易,而设计一个极度去中心化的系统却很难。但以太坊在去中心化这个目标上决不妥协。

系统恢复能力(Resilience):

其目标是为了让系统即便在节点大规模宕机或者全网被分割肢解时仍然能保持正常运转。

如果一个区块链系统中80%的节点在一段时间内都无法正常上线工作,系统会怎么样?

大家一直都期望以太坊能巩固它的基础架构(比如支付系统,身份系统等)。没有人能接受一个基础架构不完善的以太坊。而且以太坊必须永远运行,甚至要能抵抗巨型灾难:比如某个强权用防火墙禁掉了它的通信网络,比如发生了第三次世界大战。

分布式系统的基本原则表明任何系统只可能在“一致性”,“可用性”和“分区容忍性”这三个要素中同时满足两个。现实中网络的节点往往由于种种原因时而掉线时而上线,这使得网络分区很难避免,因此分布式系统就必须在“一致性”(系统中所有的节点都对某个请求作出一致的回答)和“可用性”(网络可正常运转)之间作出选择。如果网络真的被分区肢解时,唯一能保证系统“一致性”的方式就只有彻底将整个网络关掉。

这个目标对beacon chain中随机数生成器的设计有着深远的影响。现在分布式随机数的生成遵循“黄金准则”。它是Dfinity项目使用的“threshold-relay”方式。这种方式用加密签名来产生(伪)随机因子,所产生的随机因子不会受到矿工的干扰。但这种方式无法在网络被分区肢解时使用,因此以太坊2.0需要另寻它法:它使用的仍然是传统的RANDAO算法。这种算法产生的随机因子由所有矿工提供的随机因子组合而成。但这种算法产生的随机因子可能会受到干扰(比如最后一个贡献随机因子的矿工可以干扰最终的结果),因此在设计共识机制时,就更要注意处理好这些问题。假设出现了这种状况:某个攻击者凑巧在某个时段控制了一系列连续的区块,试图对以太坊发起攻击。这时共识机制的设计就要保证以太坊全网只要还有三分之二的节点是诚实的,攻击就无法成功。

在任何情况下,用RANDAO算法产生的随机数都要保持生命力,即便在全网很多节点都无法正常工作时,以太坊都能正常运转。

这个设计目标在系统实现中的另一个典型实例就是“不活跃惩罚商数”(“inactivity penalty quotient”)。这个指标以前被称为“e的平方根倒数下降时间”。在以太坊2.0中,为了确认beacon chain中的一个区块,绝大部分矿工要进行投票。如果大量矿工无法在线工作或被孤立而导致无法投票,则区块就无法得到确认。这时以太坊会在一段时间内开始逐渐没收这些矿工抵押的以太币,直到他们能正常上线工作为止。这段持续时间通常为18天,被视作网络恢复时间。但如果这些矿工始终都无法正常工作,那么当他们所抵押的以太币被扣除到一定程度后,又会出现绝大多数矿工可以正常投票的局面,以太坊便能恢复运转。(注:这段话的意思是如果一些矿工始终无法在线工作,那么他们抵押的以太币会被不断扣除,当被扣到一定程度后,他们就失去了作为矿工的资格。这个时候就只有网络中剩下能正常工作的矿工才有资格投票,那么在这剩下的节点中投票,区块就可以继续产生,系统便能恢复运转)。

注意:这种设计给了以太坊应用和用户最大的灵活性:当以太坊无法确认区块时,以太坊上的应用可以自行决定是否继续运行。如果不这样,一旦以太坊停止运转,则以太坊上的应用就无所适从。

以太坊一直以来秉持的理念之一便是“永不停歇”。以太坊2.0当然也会继续秉持这个理念。

安全(Security):

其目标是为了利用加密和设计技巧让尽量多的验证节点在每个单位时间内充分参与验证。

当我们讨论以太坊2.0的安全时,意味着无论黑客怎么攻击(比如POW中的51%攻击),它都难以影响以太坊的正常运转。

以太坊2.0要取得这样的安全性,就需要大量矿工参与各种活动。矿工们组成一个个委员会,每个委员会都负责一些具体事物比如检查数据,投票等。

矿工的数量越多,委员会的数量越多则系统越安全。首先,矿工越多意味着去中心化程度越高,多样性越高,那么合谋作弊的可能性就越低。(注意:以太坊2.0假设攻击者最多能控制三分之一节点,即便在这种情况下仍然能保证系统安全)

其次,如果发生作弊,比如同时有两个区块得到确认(这意味着有相当多节点在作弊,同时给两个区块投了票),怎么办?这种行为肯定是可以被监测到的,一旦发现,则作弊节点抵押的以太币会被全额没收,让节点损失惨重。在POW区块链中,这种处罚就不可行,因为发动51%攻击的攻击者仅仅只需要付出矿机的运营费,而没有其它任何损失。

第三,即便全网节点有三分之一叛变了,只要我们选择的委员会规模足够大,也能尽量避免不诚实的委员会出现。比如1000个矿工中,有333个叛变了。我们随机选一个矿工进入一个委员会,那么有33.3%的机率这个委员会不诚实;如果我们随机选三个矿工进入一个委员会,那么就只有25.9%的机率这个委员会不诚实;如果选十三个矿工,就只有10%的机率这个委员会不诚实;如果我们选667个矿工,则这个委员会不诚实的机率就降为0。

要攻击以太坊2.0,攻击者必须控制一个委员会中三分之二的矿工。如果全网矿工有几千,我们设定一个委员会的最小规模为128人,那么即便攻击者能控制全网三分之一节点,但想控制这个委员会中三分之二的矿工,他的机率都只有万亿分之一。

这样的设计使得以太坊2.0可以用各种委员会来处理各类事物:每一个事物都由一个随机选取的委员会来投票处理。委员会的组成经常(在某些情况下每384秒)变更。委员会的这种设计方式用BLS聚合签名算法来实现。委员会中的每一个成员单独投票签名后,这些签名被聚合成一个单一签名用于验证。正是因为有了这种技术使得系统不用逐一验证每一个成员的签名,而大大提升了效率。

简洁性(Simplicity):

系统复杂度越低越好,甚至可以为此牺牲部分效率。

这个设计原则估计是最容易理解的。复杂性是安全性的敌人。为了确保以太坊2.0一直正常运转,我们必须对它的协议设计反复推敲,不断排查各种潜在问题甚至是负面激励。

初看起来,“简洁性”可能不会给人留下深刻的印象。简洁性绝不仅仅指代码简洁,更根本的在于设计理念上的简洁。每一个区块链技术都不得不同时处理三个难搞的技术:分布式系统,密码学和博弈论。以太坊1.0算是比较简单的系统了,它的加密经济模型直白易懂。即便如此,各种意外都还频繁出现。燃料代币(Gas Token)就是一例。这个机制最初设计是为了减少存储在区块链状态中的数据,但实际上却增加了存储的数据。因此,协议设计越简单越好。

区块链技术总有创新,总在进步。我几乎每天都能听到新的共识机制出现,新的加密算法诞生,新的加密经济模型发明。以太坊2.0虽然也吸收了大量最新的技术,但和这些层出不穷的创新相比,还是显得很保守。但这种保守是有意为之:尽量保持简洁的设计。

举例来说,Polkadot和以太坊2.0的设计有很多共同之处(这不奇怪,因为Gavin Wood参与了以太坊分片的早期构想)。两者都用分片协议:Polkadot中每个分片可以运行不同的协议,而在以太坊2.0中,每个分片只运行同一个协议。尽管Polkadot的异构设计非常吸引人,但最终以太坊的简洁设计会胜出(注:这是英文作者自己的观点)。

这背后的思想就是仅仅只把最刚需的部分放到以太坊2.0的第一层:关键的共识机制层,而把其它复杂问题的处理放到扩展层。这也是为什么以太坊底层协议中不包含诸如身份和隐私的功能。关于这一点,Vitalik有一篇文章“Layer 1 Should Be Innovative in the Short Term but Less in the Long Term”值得大家仔细研读。

持久性(Longevity):

尽量为系统选择能保证量子安全的组件。如果组件暂时无法保证量子安全,那就选择容易被替换的组件。日后当有了量子安全的组件时,可以方便地将这些临时组件用量子安全的组件所替代。

当量子计算机真正投入使用时,会极大削弱现有加密技术的安全性,尤其是BLS,ECDSA技术。只不过现在没人知道这何时会发生,但我们得未雨绸缪,否则以太坊难以持久运转。

以太坊2.0的某些设计比如基于哈希的RANDAO算法已经考虑到了这一点,做到了量子安全,但其它的技术比如BLS聚合签名还无法抵御量子攻击。

另一个能抵御量子攻击的是正在研发的STARKS(Scalable, Transparent ARguments of Knowledge)技术。它更通常的名字是零知识证明ZK-STARKS(用于隐私)技术。

即便如此,我们也得非常小心。因为在密码学领域,一个技术不经过起码十年的考验,都不可轻言可靠。STARTKS技术实际上非常新,并且还在发展中,很多工作甚至才刚开头。

时间还来得及。重要的是得保证我们现在所用的加密机制未来可以方便地被替换。一旦我们发现某些组件无法抵抗量子攻击,能方便地把它换成更好更安全的抗量子攻击的组件。现在以太坊使用的数据可用性证明和签名聚合技术(注:这两个技术无法抵御量子攻击)未来就可以方便地被替换。

结论:

去中心化,系统恢复能力,安全性,简洁性和持久性这五点原则构成了以太坊2.0的根本,是它的DNA。这些设计目标将保证以太坊2.0还是社区心目中的“以太坊”。它们是以太坊2.0有别于其它区块链系统的根本。

参考链接:https://media.consensys.net/exploring-the-ethereum-2-0-design-goals-fd2d901b4c01

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容