5

以太坊2.0:从PoW迈向PoS的征途

 1 year ago
source link: https://www.ccvalue.cn/article/1399930.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
因此,ETH2.0的升级计划也理所当然的成为当下加密世界最受关注的热点之一。而该次升级计划的核心之一就在于验证机制将由PoW转变为PoS。

PoW、PoS和女巫攻击

2282f406f904a26a36bb08e62b4e347d.jpg

ETH作为当今加密生态的头部公链,其拥有最为繁荣的生态系统和最大的TVL。因此,ETH2.0的升级计划也理所当然的成为当下加密世界最受关注的热点之一。而该次升级计划的核心之一就在于验证机制将由PoW转变为PoS。

根据区块链共识机制中最为核心,也是最为基础的“抗女巫攻击策略”进行分类,区块链共识机制可以分为最为主流的两大分支——工作量证明(Proof of Work,即PoW)和权益证明(Proof of Stake,即PoS)。

我们先简单说明一下什么是女巫攻击:所谓女巫攻击(Sybil Attack),就是指通过伪造多个ID对网络进行干扰的攻击方式。该名称来源于美国著名小说《女巫》。该小说的主角患有多重人格障碍症,一个身体内同时兼容多个人格。

女巫攻击在网络中很常见,淘宝产品中的刷量、刷赞等都是黑客通过伪造大量ID造假完成的。女巫攻击最常见的攻击场景是数据冗余机制,即为了提升网络安全,将数据进行多重备份的机制,而区块链正是使用数据多重备份机制的典型。因此,在分布式数据存储的区块链中从来不乏女巫攻击的身影。

要实现女巫攻击,需要通过一个实体节点伪造出大量的伪装节点,并将这些节点广播到整个区块链网络。当其他正常节点查询信息时经过这些伪装节点,攻击者可以操控伪装节点对查询进行干扰,继而反馈给查询者虚假信息,或者干脆不反馈任何结果。

当一个区块链中的伪装节点数量超过真实节点时,攻击者会凭借投票票数领先的优势击退真实的节点。攻击者还可以通过拒绝接受新区块、返回错误信息等方式拒绝新节点的加入,以达到对区块链的统治。这种情况下,攻击者就拥有了整个区块链的决定权,可以篡改交易记录、更改交易顺序,对区块链造成极大的危害。

区块链的基本原理就是用户将数个交易打包成块,通过哈希引用把单独的区块连接成一条链,从而得到一个共享的账本。但是直接这样使用一个账本的安全性就很难保证,因为坏人同样也可以创造一个账本,然后把两个账本同时摆在用户面前。而哪个是真的哪个是假的,用户应该相信哪一个,就成了一个复杂的权衡问题。

如果在中心化的环境中,这个问题将不再是问题,例如,如果我有一个银行账户,其中余额的多少完全由银行的中央系统所确定。如果账户的实际数额和事实情况不一致,我就可以通过与中心系统协调或者法律途径解决问题。

但在去中心化的世界中,是不存在这个一个一锤定音的中心化机构的。因此,人们就需要通过其他方式达成共识,才能保证账本的公正性。

那么问题来了,在去中心化的环境中,应该怎样达成共识呢?

最经典的办法就是投票。通过大家共同参与投票,就可以选出一个值得信任的账本,然后共同使用该账本。

但是,说到投票,公平公正的问题就无法忽略,例如,投票权要怎么分配就是个不得不考虑的问题。

如果在一次投票活动中某一个体拥有了可以左右全局的票数,那么这场活动就很难再称之为投票。因为这意味着他想做什么,结果就是什么样的,而这对于其他个体显然是不公平的,这种不公平的方式也注定无法获得共识。因此,如果我们真的希望达成某个共识,就要排除这种不公平。所以投票权的分配被视为是共识协议中最为核心的部分之一。

如果发生在线下,投票权分配的问题其实很容易就能得到解决。实行简单的一人一票即可。至于身份验证问题,通过身份证件在投票的时候登记一下就可以解决。

但是如果发生于线上,一人一票的问题就会被无限复杂化。

首先,在线上的环境中,尤其是去中心化的环境中,如何定义“一个人”就是个很大的问题。大家在线上都是以匿名的方式存在,甚至无法判断网络对面到底是一个抠脚大汉还是一条狗。因此,我们就需要一个抗女巫攻击的机制。但到底是将一个账户视为一个人,还是将一个ip视为一个人,抑或是再用别的什么标准去确定?

在区块链中,最常用的两大解决方案就是工作量证明(PoW)和权益证明(PoS),后者包括代理的权益证明(DPoS)。当然除它们之外还有一些其他的证明方式,比如说证明拥有多少空间,或者证明燃烧了多少货币,但是目前最为主流的还是PoW和PoS这两种。

PoW工作量证明

2cd434c62b54989cf780a647f7ff7440.jpg

工作量证明(PoW)的基本思想就是通过算力决定出块权。如果你能解出一个PoW计算难题,你就可以获得出块的权力。我们甚至可以粗暴的理解为一个CPU、一个GPU、或一台矿机一票。这种模式的优势在于:

1、整个系统是无许可的。参与者不需要任何人许可,只要有机器有算力就可参与。甚至理论上都不一定需要机器,如果说你可以手动算出一个区块的哈希,并及时将结果上传,别人依旧会承认这是一个合法的区块。

2、PoW投票行为本身成本是比较高的,不论是使用CPU、GPU还是用矿机,机器的成本和电力的成本,都是实打实的真金白银。这就意味着,如果想在PoW的环境下进行女巫攻击将要付出极高的成本,而这往往会让攻击者得不偿失。

3、PoW中所投的票和投票权是保持绑定的。按照工作量证明的一般逻辑,投票的时候需要先打包出一个块,然后再对这个块做工作量证明,如果做出证明就相当于投出去一票,但是这个时候打包的块已经没有办法修改了。而另一方面,如果想要回滚掉自己出的块,必须付出和回滚别人的块时候所需的同等的算力。这意味着一旦投票成功以后,即使是投票者本人也修改不了投票的内容,投票的信誉度得以保障。

当然基于PoW机制的共识算法也存在一些无法规避的缺点。

1、PoW的延迟非常高,因为把交易打包到区块以后,这个区块并不是马上就成为一个有效的候选区块。至少还要完成一个工作量证明这个区块才能称之为候选区块。

于是,从打包好区块到做完区块的工作量证明这一段时间内,交易是不可能被人确认的。所以即便比特币不是等六个块确认,而是看到一个块就确认,确认一笔交易平均也要等十分钟时间。

2、PoW机制另一个被人诟病的缺点就是能耗特别高、不环保。对于这一点,工作量证明的能耗是否必要,我觉得见仁见智,可以持保留意见。虽然它的确存在一些浪费问题,但攻击者的成本也因此被拔高到难以承受的地步,从这个角度来说,似乎也不全是件坏事。

PoS权益证明

edcbc54a04cffc9edf04856b02512065.jpg

权益证明(PoS)基本的思想是:当你持有Token(stake),你就有记账权和投票权。你的投票权和你持币的数量是成正比的。简而言之,Token越多,投票权就越大。

PoS协议的基本框架是按所有的参与者的持币量,去分配打包权和投票权。这也就意味着,参与者的信息是已知的,至于这有什么意义咱们先按下不表,后续再论。

回到打包权和投票权,在PoS的系统里打包和投票两件事是分开的(PoW系统里这两个没有分开)。分配完打包权以后,拿到打包权的人就有资格出一个候选区块。这个区块里包含要处理的交易和打包权人自己的签名。

但是候选区块并不意味着就会被加入共识,在广播候选区块以后还需要由那些有投票权的人去投票(投票的形式就是在被投票的区块上做个签名)。只有在投票后得到相对多数票的支持,候选区块才会最终被加入共识,变成一个有效的区块。当然投票的过程可以用很多方式执行,比较常见的就是可以用一个少数服从多数的共识算法去实现。

这一点跟PoW非常不一样,因为在PoW系统里人们根本不知道全网的算力有多少,只能靠估计,而且一般还估计不准。所以PoW系统里几乎不可能用一个确定的阈值去判断什么是多数。

在PoS系统中,如果检测到有的参与者违反了PoS共识的协议,就可以对他们做出一些惩罚。比如有的人把自己的一票投给很多个块,或者说有票但就是不投,这些会对系统的安全性造成影响的行为都可以惩罚。

接下来,让我们来看一下权益证明的优点有哪些:

1、矿工和持币者的动机是一致的。

PoS的矿工都必须持币,这意味着在PoS的生态里将减少不持币但靠机器来挖矿的角色。在PoW的社区中,经常会出现有钱人、开发者、以及矿工三方的利益不是完全一致的情况,然后就会出现争执,以至于最后很多事情都难以进展。而在PoS中,至少矿工和资本家的利益会更为一致,一定程度上减少了冲突和分歧。

2、PoS的延迟可以做得非常低,确认可以非常快。

在PoS系统里,拿到一个交易就可以马上打包,打包以后就可以广播,这个时间是不需要等待的,不像PoW,必须等至少做一个PoW问题的时间。PoS共识的延迟主要是受限于网络和参与投票的人数。因为投票的人越多,要等的时间也就越久。

3、PoS比较环保,因为它不需要做工作量证明。

在Pos中,投票实际上就是做个签名,最多再做一些简单的运算,比求解PoW难题容易多,自然消耗的算力和电力就大大减少。

但不得不说,PoS的缺点也同优点相对,另外,它也失却PoW系统的一些优点。

1、与无许可的PoW系统相比,PoS的系统在匿名性和许可性上稍微差一些。因为一个人如果要加入一个PoS的系统,首先要持有Token。这个Token是无法通过其他方式获得,只能跟持有Token的人去做交易,且只有在交易成功拿到币后才可以加入系统。不像PoW,只要有一台机器接入系统,就可以直接挖到Token。

2、投票行为本身成本非常低,只需要做个签名就可以生成一个有效的投票。这样的话在安全性上会有一些问题。比如PoS系统常见的无利害攻击问题。

另外,投票权可以复用,可以转让,这也是相当危险的。如果用户把自己的私钥卖给别人,那他以前投出的票或是在历史上每个分支做出的选择,拿到其私钥的人都可以再去重新选择一次。这会在安全性上带来一些问题。

3、我们在前面提到过,在PoS机制中,分配投票权和打包权之前参与者的信息是已知的。因此,投票权的决定时间是早于生成候选区块的。这样一来意味着人们可以选择的策略空间将会更大,整个博弈会变得更复杂。通常来说,策略空间大对于系统的安全性相当不利,因为这会给攻击者留出更大的操作空间。其结果就是在PoS系统中会有更多的攻击方式,比如无利害攻击、长程攻击等。

4、在PoS中矿工和资本家通常是一个人(一个群体),尽管这会减少整个系统的博弈成本。但也意味着整个系统的中心化程度会水涨船高。

PoW和PoS

9ace8ec38385c1537d74e9adce7e0551.jpg

在区块链中,有一个不可能三角,即安全性、效率和去中心化。通常情况下,这三方面是无法兼得的。而PoW和PoS就是在这三个方面做出了不同的取舍。

PoW以无许可和算力门槛保证了整个系统的安全性和去中心化程度,但在效率方面则不可避免的会有缺失,实际上其也确实长期被延迟高、低吞吐量等问题所困扰。

而PoS则选择了另一条路,它不再无许可,取而代之,矿工成为了生态系统的实际参与人。这意味着如果矿工做出了不利于整个系统的决策,作恶者也会付出代价(代币Token下降)。但其投票机制也降低了整个系统的安全性,同时,矿工和资本的身份合一也让系统出现了中心化的风险。

有人曾经打过一个比方。

在一个典型的PoS共识系统中,大家通过股权质押获取一张门票,然后获得门票的人坐在会议室里指点江山。

而在以比特币为代表的PoW共识系统中,一群人坐在漆黑的荒野里,他们既不知道其他人的身份,也不知道荒野里一共有多少人、其他人何时来何时走,只能通过喊出自己的观点和听清他人的喊声来交流并最终达成共识。

不得不说这个比方相当的形象,PoW和PoS的特点尽显无疑。而实际上两者孰优孰劣是无法比较的,对他们的采用只能体现出两种不同的权衡。

ETH2.0最终决定采取PoS也意味着对目前的ETH来说,效率问题已经相当严峻了,因此可能需要以一定的安全性和去中心化程度作为交换,这是无可厚非的,毕竟当下没有可以兼顾的解决方法。

如果能把PoW和PoS的优势结合起来,就有可能做到一个安全性又高,确认又快,吞吐量大,而且能耗比较合理的系统。

但其技术难度之大,自不必多说。因此,目前我们只能静观其变,期待更好的解决方案横空出世。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK