查看原文
其他

科普 | 什么是以太坊Casper协议?

2017-12-07 BlockGeeks 以太坊爱好者

编者按:在12月3号的亚太区以太坊培训和交流Meetup上,Jon Choi为大家贡献了关于加密经济学和Casper的演讲。这篇文章同样是关于Casper的,而且从行文中可以看出本文的作者受到Jon Choi的解释的启发,阅读本文应可增进对Casper的理解。而Jon Choi的《Casper 101》,见EthFans上网站的中译。


一般来说,如果你对以太坊(Ethereum)和加密货币感兴趣,你一定听过了权益证明(Proof of Stake)和以太坊Casper这两个名词。没有什么东西可以离得开它们,它们充斥每一个角落。就因为有这么材料,每一个对这些主题感兴趣的人也许都正在经历“分析的泥淖”。所以,在这份指南中,我们向你展示关于Casper的终极向导以及它将如何永远地改变以太坊。

什么是工作量证明(Proof of Work)?

大多数加密货币包括比特币都使用“工作量证明”。工作量证明的过程具有下列步骤:

  • 矿工们解答密码学谜题以“挖出”一个区块并加入到区块链上。

  • 这一个过程要求大量的电力和运算。在系统中,这些谜题已经被设计成艰难而又繁重。

  • 当一个矿工解决一个谜题的时候,他们发布他们的区块到网络上接受验证。

  • 验证一个区块是否属于一条链是一个非常简单的过程。

工作量证明系统,在本质上说就是这样的。解决谜题是困难的,但检查答案是否正确则是容易的。它也是比特币(Bitcoin)和Ethereum(直到现在)一直在用的系统。但是,这套系统存在一些根本的缺陷。

工作量证明的问题

事实证明,工作量证明存在非常多的问题。

  • 首先,也是最重要的,工作量证明是个极端低效的系统,因为它消耗大量的电力和能量。

  • 可以购买更快更强劲的ASIC设备的人们和机构通常可以比其他人拥有更高的概率挖到区块。

  • 上一点导致的结果是,比特币并没有像它希望的那样分散化。让我们看看这张哈希算力分布表:


-图片来源:Blockchain.info-

你可以看到,约有65%的算力是被5家矿池瓜分的!

  • 理论上来说,这5个大矿池可以联合起来并在比特币网络上发动51%攻击。

为了解决这个问题,以太坊开始关注权益证明。

什么是权益证明?

权益证明将让整个挖矿过程虚拟化,并以验证者取代矿工。

以下是权益证明的运行过程:

  • 验证者必须锁定一些他们拥有的币作为保证金。

  • 在此之后,他们将开始验证区块。同时,当他们发现一个他们认为可以被加到链上的区块时,他们会通过下赌注来验证它。

  • 如果该区块成功上链,验证者就将得到一个与他们的赌注成比例的奖励。

权益证明最大的障碍

以太坊开发者一直计划着最终转移到权益证明。他们的计划一直是这样的。但是,在他们可以这样做之前,他们不得不解决一个权益证明的一个最大的缺陷。

考虑一下这种场景:

假设我们处在上面的这种情况下,有一条蓝色的主链和一条红色的从主链中分出来的链条,如何禁止一个恶意的矿工在红色区块上挖矿然后推动一次硬分叉(Hard Fork)呢?

在一个工作量证明系统上,这一风险是可以被减轻的。

假设恶意矿工Alice想在红色链上挖矿。即便她投入了她所有的哈希算力,也不会有任何矿工加入她在新链上挖矿。每个其他人都将继续在蓝色链上挖矿,因为在最长的链上挖矿收益更可观,而且没有风险。

记住,工作量证明在资源方面是非常昂贵的。对一个矿工来说,花费许多资源在一个将会被网络拒绝的区块上是没有任何意义的。因此,链分裂在一个工作量证明系统中是被避免了的,因为攻击者将不得不付出大量金钱。

但是,当你把这种情形放到到权益证明下的时候,事情看起来就有些不一样了。如果你是一个验证者,你可以简单地把钱投到红蓝两条链上,完全无需担心间接的不良后果。不管发生什么事,你都总是可以赢,不会失去任何东西,不管你的行为有多恶意。

这就是所谓的“无利害关系(Nothing at Stake)”问题,也是以太坊必须解决的问题。他们需要一种协议,可以实行权益证明,同时减少“无利害关系”问题。

进入以太坊Casper

Csaper是以太坊选择实行的PoS协议。虽然已经有一整个团队在忙着创建它,Vlad Zamfir还是常常被认为是“Casper的头面人物”。


-图片来源:Blocknomi-

所以,Casper跟其他PoS协议到底哪里不一样呢?

Casper实施了一个进程,使得它可以惩罚所有的恶意因素。这就是权益证明在Casper下是如何工作的:

  • 验证者押下一定比例的他们拥有的以太币作为保证金。

  • 然后,他们将开始验证区块。也就是说,当他们发现一个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证它。

  • 如果该区块被加到链上,然后验证者们将得到一个跟他们的赌注成比例的奖励。

  • 但是,如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事,他们将立即遭到惩罚,他们所有的权益都会被砍掉。

正如你可以看到的,Casper被设计成可以在一个无需信任的系统上工作,并且是更加拜占庭容错的。

任何人,如果以一种恶意的,或者说是拜占庭叛徒式的方式行动,就会立即受到惩罚、失去他们的保证金。这就是它不同于其他权益证明协议的地方。恶意元素会失去一些东西,所以,“无利害关系”是不可能的。

这不是唯一一个Casper可以惩罚验证者的地方。

正如Hudson James以及Joris Bontje在“StackExchange”的回答中标注的那样,Casper设计了苛刻的激励来保证网络的安全,包括惩罚离线的矿工,不管ta是有意还是无意的。

这意味着验证者将不得不变得对他们的节点正常运行时间小心翼翼。粗心或者懒惰都将导致他们失去自己保证金。这一属性减少了对交易和整体利用率的审查。围绕着所有这些,这种“惩罚”属性同样给予了Casper相对标准工作量证明协议的明显优势。

让我们再次放上链图解:

在一个工作量证明协议中,一个矿工会在蓝色链上还是红色链上挖矿并不重要。因为诚实的和恶意的矿工都将花费同等数量的资源。

然而,在Casper中,如果一个诚实的验证者在蓝色链上挖矿,他们将得到与他们的赌注成比例的奖励,但一个恶意的矿工将因为下注在红色链条上而失去他们的保证金。

以太坊Casper VS 以太坊Casper?


-图片来源: Medium-

Casper不是一个具体的项目。它是两个研究项目的融合,这两个在最近一直由以太坊开发者团队承担:

  • Casper the Friendly Finality Gadget(FFG)

  • Casper the Friendly GHOST: Correct-by-Construction(CBC)

Casper FFG

Casper FFG也就是众所周知的Vitalik版Casper,是一个混合PoW/PoS共识机制。它是正准备进行初步应用的版本,也是被精心设计好来缓冲权益证明的转变过程的。设计的方式是,一个权益证明协议被叠加在正常的以太坊版工作量证明协议上。虽然区块仍将通过工作量证明来挖出,每50个区块就将有一个权益证明检查点,也就是网络中验证者评估确定性(Finality)的地方。

什么是确定性(Finality)?

确定性(Finality),从一个非常宽松的意义上来说,意味着一旦一个特定的操作完成,它将永远被蚀刻在历史上,没有任何东西可以逆转这个操作。在处理金融事务的领域,这是非常重要的。想象Alice在一个公司里拥有特定数目的一种资产。就算公司的某些进程中出了一点小故障,她也不应该需要恢复对该资产的所有权(因为小故障并不影响她的所有权)。

有人说,工作量证明是唯一一种在区块链上实现确定性的方式。但是,这并不是必然正确的。真相远比这个要复杂很多。

正如Vitalic Buterin提出的,世界上没有一个系统可以提供100%的确定性。黑进一个系统,或者物理上破解一份注册表并篡改数字以改变一个人的资产负债表,都是有可能的。这也是中心化机构的一个大问题。但是,分布式的系统也会面临同样的问题。

实际上,比特币,工作量证明机制的典范,至少三次曾经面临确定性问题。在一个例子中,链必须分叉,因为一个Bug存在于软件的一个版本中但在其它版本中并不存在。这在社区中导致了分裂,一部分人拒接接受被另一部分人所接受的链。这次分裂在6个小时中被解决。

所以,问题在于,Casper FFG如何能够提供确定性?根据Vitalik的说法 ,因为下面三个理由,Casper保证可以提供比工作量证明更强的确定性:

  • 完全经济确定性。三分之二的验证者会下最大几率的赌注使区块达到最终一致。因此,对他们来说,串谋以及攻击网络的激励是非常小的,因为,如果他们这样做的话,他们将危及自己的保证金。Vlad Zamfir更好地解释了这一点,他说:“设想一种版本的工作量证明,如果你参与一场51%供给的话,你的矿机会烧毁。”

  • 假设整个网络由三个人组成:Alice,Bob,和Charlie。假设Alice和Bob将他们的保证金放在一种结论上,同时,Bob和Charlie把他们的保证金放在一个与之对立的结论上。不管发生什么事,Alice或者Charlie其中一人肯定会损失一大笔钱。所以,正如你可以看到的,验证者没有动机去串谋或用恶意的方式行动,因为他们总会失去一大笔钱。

  • 然而,如果双重确定性(Double Finality)发生的话,还有一种意外事故处理方案。如果双重确定性发生的话,用户可以选择他们想到哪条链上去。不管哪条链,得到多数票的就成为主链。基本上,在Casper上,双重确认会导致硬分叉而不是回滚。

Casper CBC

Casper CBC也就是我们所知的Vlad版Casper使用建构修正(correct-by-construction,CBC)协议。嗯,那什么是CBC协议呢?(大多数材料都来源于Vlad Zamfir的edcon presentation以及Jon Choi的文章《Ethererum Casper 101》)。
https://www.youtube.com/watch?v=6boQSQ7IuNY

这是一个普通的协议设计的样子:

  • 你正式指定协议。

  • 定义该协议必须满足的属性。

  • 证明该协议可以满足给定的属性。

而CBC协议的样子是:

  • 你正式地但只是部分地指定协议。

  • 定义该协议必须指定的属性。

  • 从满足所有它被规定去指明的属性中推导出该协议。

用大白话来说,你是动态地推导出该协议的。获得完整协议的其中一种方式是运行一种Vald称为“理想对手(ideal adversary)”的预估安全预言机(estimate safety oracle),它运行下列两者之一:

  • 提出一个合理估计的错误的例外情况。

  • 列出所有在未来可能发生的错误。

所以,这个理想对手要做的事情,就是不断进行微调、让这个只是部分建构好的协议更加完美,直到它变成完全版。

可以看到的是,以太坊开发者团队一直在努力地开发这两个Casper项目。很明显,这不会是最终版本,但不管这最终版本是什么,它肯定会受到Vlad的和Vitalik的Casper的深刻影响。正如刚刚提到过的,Vitalik的Casper将被初步运行以缓冲从PoW到PoS的转变。而Vlad的Casper,通过使用一个“理想对手”推导出一个安全性论证。

为什么我们需要Casper?

使用权益证明有多种好处。这些好处可以在下面这些分类中广泛地列举出来。(对Jon Choi及其文章的大喊)

  • 帮助实现分散化

  • 高能效

  • 经济安全

  • 扩展性

  • 转移到PoS


实现分散化

正如我们在上面看到的,工作量证明协议不再是真正对去中心化友好的了。让我们再一次看看比特币的哈希算力分布图:

而这里是以太坊的矿池哈希算力分布:


-图片来源:Etherchain.org-

你可以看到,大部分哈希算力集中在几个特定的矿池,而这意味着无论发生什么事,他们总会比其他人有更大的机会挖到区块、获得奖励。

因为他们可以获得更多钱,他们可以买得起更好更快的ASIC设备。这基本上意味着,无论发生什么,大矿池将总是比个人和小矿池拥有优势。换句话来说,富有的将变得更富有。

权益证明通过让挖矿完全虚拟化使得这一切都无关紧要。然而,这不是权益证明减缓中心化效果的唯一途径。为了理解这个,首先我们需要弄懂“经济规模”意味着什么。(谢谢ACDCLeadership的Youtube频道提供的数据)

在生产的时候,有两种类型:

  • 短期生产

  • 长期生产

在短期生产中,至少投入的资源是固定的。想象一个只有一个烤箱的小披萨店,无论他们是要制作1个还是25个披萨,他们都只有一个烤箱可以用于制作。而在长期生产中,所有资源都是可变的,这就是规模经济产生影响的地方。

在投入资源的数量都是可变的长期生产中,如果你投入两倍数量的话会怎么样?在这一场景中,只有三种结果,我们称为“规模报酬”。

  • 产出大于两倍。意味着一个递增的规模报酬。

  • 产出变成两倍。意味着一个不变的规模报酬。

  • 产出小于两倍。意味着一个递减的规模报酬。

下面这幅图将向你展示一个对规模经济的图解:


-图片来源:Wikipedia-

到底发生了什么?

当产量从Q增长到Q2的时候,生产的总成本从C降到了C1。这就是所谓的规模经济。在这之后,增速变得平均了一些。这是你获得恒定规模报酬的地方。再然后,当你越过这一点,成本就会随着你的产出超过Q2而上升。

这里面的意思是,大的企业可以通过提高产量来减少他们产品的平均成本!(在到达限度之前)

在这种意义上,产品越多反而越便宜!

让我们用现实世界来举个例子。

一个小规模的烘培作坊的初始成本明显少于一个大烘培厂的因为工厂必须在机器上投资很大。但是,在长期生产中,对工厂来说每一条面包的平均成本将比烘培作坊的更低。

OK,就是这样了。但这怎么对应到矿池呢?

跟大企业很像,大矿池可以通过下列途径减少他们投入资源的成本:

  • 在大规模运营中分摊固定成本。

  • 作为一个更大的经营主体,拥有议价能力。

这意味着,一个大而有影响力的矿池可以一美元又一美元地比其他矿池生产更多哈希算力,即便他们投入了等量的资金。

这一问题在权益证明中完全被消解了,因为一个简单的原因。在权益证明中你投资一份保证金。你不能轻易地结成矿池然后让你的保证金一美元又一美元地升值。在一天结束的时候,一美元还是一美元。规模经济在这里不起作用。

能源效率

工作量证明最大的问题是能源浪费。最糟糕的部分是,能源浪费是为了能源浪费。尤其是比特币,其对能源的欲望是非常贪婪的。看一下这个:


-图片来源:Digicnomist-

再来一些数字如何?(来自Digicnomist)

你应该关注两个数字。

比特币全球一年的挖矿成本是1,423,794,674美元。

光是比特币,一年要消耗相当于28.48 TWh的电能。厄瓜多尔国(The country of Ecuador)的才消耗大约21 TWh!

实际上,我们可以比较一下比特币和一些国家的能源消耗:

比特币比爱尔兰(Ireland)、巴林国(Bahrain)和斯洛伐克共和国(Slovak Republic)消耗的能源还要多!

好吧,让我们公平一点。

不如比较一下比特币与其他支付系统,比如……Visa?

比特币的能源消耗与Visa相比如何?

嗯。看起来不是太好。

所以,很明显,比特币使用太多电力了,太多钱被花在资源上了。但是,外部性成本呢?大量的电力消耗对环境产生的影响必定是巨大的。

虽然毫无疑问地比特币和工作量证明已经造成了大量积极的社会影响,我们至少应该看看权益证明系统可以做到怎样的规模,以及,它是否可以在不消耗那么多电力的情况下工作。

经济安全

权益证明(尤其是Casper)的最大优势是它的经济安全性。想想看,假设你是一个验证者,并且你将你自己的钱作为保证金存入网络。以最大化网络利益的方式行事也是你自己的利益。知道了如果有恶意的行为你的保证金中的一大部分将被罚没,你为什么还会那样做呢?

当你有很多钱锁定在里面的时候,你为什么还要攻击网络、损害币值呢?
同样地,“惩罚效应”消除了Vitalik定义的“驻守重生点攻击(spawn camping attack)”的可能性。


-图片来源:Vitalik Buterin 推特-

在权益证明中,重生点攻击可以被防止,因为一个简单的事实:一次攻击将导致惩罚,没收已投入的保证金。如果你没有投入任何保证金,你就不能加入PoS验证。

扩展性

权益证明可以提高扩展性的最显而易见的方式是允许分片(Sharding)。

如同Vlad Zamfir所言,PoW加上分片是并不是不可能的,但很困难。什么是分片?

分片是一个从数据系统中产生出来的术语。让我们来看看对数据库来说分片意味着什么。假设你的网站有一个大而笨重的数据库。拥有一个笨重的数据库不仅意味着搜寻数据变得更慢,也限制住了你的可扩展性。在这种情况下你会怎么做?

给你的数据做个水平分区(horizontal partition),把它们变成更小的表格并且储存在不同的数据库服务器中如何?


-图片来源:Dzone-

像上面这样?

现在,你也许在问,为什么是水平分区而不是垂直分区呢?这是因为设计表格的方式。

考虑一下。假设这是我们的主表格:

你看到发生什么了么?当你垂直切分一个表格,他们将变成两个完全不同的表格。

但是,如果我们水平切分他们的话:

看到了吗?这是拥有更少数据的完全一样的表格/数据库。这些更小的数据库就是我们所知的更大数据库的片(shard)。每一片的表格结构都应该是完全相同的。

如果我们在一个工作量证明协议中运行分片,会发生什么?

通过将一个状态分为不同的片,分配可以加快运行过程。但是,如果我们使用工作量证明的话,较小的片将处在被恶意矿工掌控的危险之中,因为它的低哈希算力。实际上,这是也工作量证明区块链永远不能运行分片的最大的理由,任意一个小分片都有可能轻易被掌控。

这种风险在权益证明中可以完全避免,因为它没有挖矿的概念。

转换到PoS

现在,这在很大程度上是一个哲学问题。

普遍来说,人们,对改变并不是那么地有好感。当他们习惯了一些东西的时候,让他们离开舒适区是非常困难的。

对于其价值完全基于大众感知的价值的货币制度而言尤其棘手。就在我写作的时候,以太坊的价值越是320亿美元。

要把权益证明炸弹掷到人群中并期待他们会跟上时代,是不负责任的。这可能会减少公众对该系统的信任,而以太坊的市值也许会下降。因此,实施从PoW到PoS的温和转变是非常精明的,而后者是Casper FFG计划实现的东西。

那么还会“富者愈富”吗?

其中一种反复出现的对权益证明的批评是,它只会让富人变得更加富有。因为为了具备验证者的资格,你需要锁定一个你的(以太)资产中的可观的比例作为保证金;而且,除了这一点,你将获得的奖励是跟你押注的数额成比例的。所以,如果你在系统中有更多钱,你将得到更多钱。

但是,Jon Choi在他的文章中否认了这一点:

“这里的主要结论应该是权益证明是明显地更加平等主义的(比如,对拥有更多资本给予更少好处),相对比比特币现在基于工作量证明的算法。”

而这背后的主要理由,就是我们已经做出的关于规模经济的讨论。在一个权益证明系统中,一美元还是一美元,大矿池无法在投入同样数量的钱时却拥有更多哈希算力而脱颖而出。

以太坊Casper的未来

最近,在我写作的时候,Vitalik Buterin说不仅Casper准备好接受测试了,它还可以在客户端更新代码时提供一个安全提升。虽然看起来并不像它已经准备好用来广泛普及了,但第一个Casper测试网发布的日子看起来是越来越近了。

权益证明是否将要实施并不是一个问题,问题是什么时候能够实施。以太坊“宁静”(Serenity)应该是一个权益证明网络。此前我们并不是从未见过PoS的实行,Peercoin非常成功地运用了它。但是,我们从还从来没有看过在这个层面采用该协议。

也许,如果Casper被成功运行的话,另一个加密货币会跟风并且做出转换。不管事情会变成什么样,Casper带来了非常多迷人的可能性。


原文链接: https://blockgeeks.com/guides/ethereum-casper/
作者: BlockGeeks
翻译&校对: 阿剑 & Elisa


更多文章:

观点 | 企业代币化

记录 | 以太坊:走向公众

干货 | 理解ERC-20 token合约

科普 | Vitalik: 25分钟认识以太坊(上)

干货 | Vitalik: 25分钟认识以太坊(下)

干货 | 以太坊Sharding FAQ

干货 | STARKs, Part I: 多项式证明

干货 | 共识算法的比较:Casper vs Tendermint

白皮书 | zeppelin_os

观点 | Vitalik 对token设计的看法

访谈 | Truebit × 管理未来

观点 | 亚太区以太坊社区培训及交流Meetup深圳站见闻

干货 | Vitalik Buterin对以太坊的规划——实现Visa级别的二次性可扩展性

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存