以太坊2.0:简述从PoW到PoS原理|猿创征文

fwens 2022-06-22 15:53:11

文章目录

  • 1.前言
  • 2.PoW
  • 2.1.什么是PoW工作量证明算法
  • 2.2.PoW的优势
  • 2.3.当前PoW算法存在的问题
  • 3.PoS
  • 3.1.什么是PoS权益证明算法
  • 3.2.PoS的优势
  • 3.3.PoS算法存在的问题
  • 4.最后

1.前言

难度炸弹是2015年加入的一个机制,通过提高挖矿难度的方式,强制让矿工转为使用质押的方式挖矿,进而使以太坊从PoW到PoS过渡,最终完成以太坊主网与信标链的合并。

受合并推迟加之宏观经济等因素的影响,导致eth价格持续下跌,按照计划,以太坊2.0将于年底上线,为此许多人都期望以太坊2.0的到来能够缓解这一状况。这让以太坊2.0再一次被推上风口浪尖,而2.0版本与1.0版本相比最大的差异就在于将使用PoS取代PoW。

本文将简述PoW与PoS机制的基本原理。

2.PoW

2.1.什么是PoW工作量证明算法

我们知道目前以太坊使用的共识算法是PoW

那么为什么需要共识算法,PoW又是什么呢?

在了解PoW算法前,我们先简单了解一下区块链的原理。

区块链,本质上就是由一个一个区块组成的链条,从第一个区块开始,后面每一个区块都要指向上一个区块Hash值,以此来保证不可篡改的特性。

每个区块结构大致如下表示

Block{
    preHash;//前一块的Hash值 
    hash;//当前块的Hash值
    data;//交易数据 
    timestamp;//时间戳 
    height;//块高度 
}

而生成Hash的方法便是将当前的交易数据、时间戳、块高度、前一块Hash组合起来进行Hash计算,得到当前块的Hash值,再将计算出Hash的块加入区块链中,此时我们已经将这一区块的Hash计算出来,同时前一Hash也指向了上一个区块的Hash值。此后,即使再有其他区块恶意将preHash改成我们指向的上一区块,都不会被加入链中,因为这一区块已经被我们计算出来的区块指向了,这就是区块链不可被篡改的原理。

img

以太坊其实也就是基于区块链技术的一个去中心化分布式应用平台,这条区块链可以看作是一个数据库,被分布到世界各个地方的机器上运行,运行着以太坊的机器称为节点,这些节点的任务就是负责打包其他地址提交的交易上链,所有节点上的区块数据都是一致的,因为当有一个节点打包一个区块上链后,会将发出广播通知,将最新的区块链数据同步给其他节点,通知其他节点及时同步。

有了解过分布式系统设计的同学应该知道,系统节点越多时,可用性就越强,同时由于以太坊是去中心化的平台,系统节点越多时,以太坊也就越安全。

说完区块链的原理后再来了解一下PoW机制

在单节点区块链上我们直接将区块计算出Hash值后加入区块链中是没什么问题,因为我们没有多节点同步的需求,但是当我们需要实现像以太坊这样去中心化多节点的区块链平台时,则可能会出现链的同步问题。

下面举个例子说明一下。

假如网络中存在A、B两个节点,在某一时刻,AB同时打包一个区块,此区块指向同时指向上一区块,计算出Hash值后,广播到网络的其他节点中,此时网络中区块链变成了两条链,即出现了区块链分叉

img

那么其他节点接收到两条链的时候应该选择哪一条继续工作呢?所以我们需要一种共识机制,来确定一条被其他节点所承认的主链,为了解决这一问题,中本聪发明了PoW工作量证明算法。

既然AB两个节点同时计算出了Hash值,那么就直接加大计算Hash的难度,让它们尽量不在同一时间广播区块。

在前面的区块结构中,加入一个随机值nonce

Block{
    preHash;//前一块的Hash值 
    hash;//当前块的Hash值
    data;//交易数据 
    timestamp;//时间戳 
    height;//块高度 
    nonce;//随机值
}

同时我们规定计算出来的Hash值必须为9个0开头。

现在区块计算Hash的公式变成了

hash(preHash + data + timestamp + height + nonce)

其中,preHash、data、height都是固定的值,而timestamp和nonce是变动的,为了计算出满足我们设定条件的Hash值,我们可以不断地变动nonce的值,直到找到满足条件的Hash值才算一个有效的区块。这一过程需要一定的时间,因此可以很大程度上避免链分叉,设定的难度越大时,越难出现这种分叉情况,到这里,大家可能还有个疑问,那就是这个计算过程费时费钱为什么还有人愿意做呢?在以太坊中,也参考了中本聪设计的比特币奖励机制,当一个区块成功上链时,可以获得一定数量的eth奖励,这种不断寻找Hash值的过程也就是我们经常听到的挖矿。

2.2.PoW的优势

1.极大程度上解决了链分叉问题。

2.加大了篡改区块链的难度,也就是当攻击者想要通过伪造的区块加入到区块链上时,必须要比全网其他节点的计算速度更快。所以攻击并非不能实现,至少要达到超过全网大部分算力才可能实现,这种情况也被称为51%攻击

2.3.当前PoW算法存在的问题

1.当大部分算力集中在一方时,则有可能出现区块链被攻击的情况。

2.浪费了大量资源,挖矿的行为最终也是为了区块上链,因为这种机制的存在,导致区块的共识需要较长的时间,难以得到广泛的应用。

3.性能差,出块需要较长的时间。

3.PoS

3.1.什么是PoS权益证明算法

为了解决以上PoW出现的各种问题,出现了PoS权益证明算法。

在PoW机制中,我们规定了计算出来的Hash值必须为9个0开头,我们把这个难度表示为target=9,通过控制target的数值可以控制出块的速度。

在权益证明机制中,我们不再使用高难度的target来限制出块的速度。

将上面定义的规则改成

Hash < target * coinAge

计算的Hash值不再通过定义高难度的target来获得,通过coinAge(币龄)来决定节点记账的概率。

举个例子说明一下

以矿工A和矿工B为例,假如A矿工拥有10个代币,B矿工拥有150个代币,按照上述的计算规则。

A:Hash < target * 10 B:Hash < target * 150

可以发现,B矿工计算出正确的Hash范围比A矿工要大15倍。

这样看,似乎非常合理,解决了PoW机制的能耗问题,出块速度变快了。但事实上仅靠这个算法还不够,因为假如当某个节点吸纳或囤积了大量代币时,不断获得记账权,不断获取记账奖励,将导致垄断的情况出现,这和去中心化的理念相违背。

我们让币龄coinAge不仅和代币数量挂钩,也让它于代币持有时间挂钩。

coinAge = 持币数 * 持币天数

当节点获得记账权后,清空节点的coinAge,例如每清空365币龄,获得0.05个eth,即年利率5%。

PoS属于PoW的一种升级机制,通过币龄来降低出块的难度,实际上并没有解决能耗问题,不过相比PoW已经降低了极大的能耗了。

这种通过收集代币获得记账权从而获取奖励的行为被称为质押挖矿

3.2.PoS的优势

1.极大地降低了PoW机制造成的能耗问题。

2.提高了出块速度

3.更加难以被攻击,PoW需要一半以上算力,而PoS需要一半以上代币,这让攻击者更难以集中资源,即使攻击者拥有了全网大部分代币,也没有必要对网络进行攻击,因为此时他已经是全网最大的股东了,攻击反而可能造成自己持有代币的贬值。

3.3.PoS算法存在的问题

1.币龄与时间挂钩,意味着某个节点可以囤积少量的代币,等到很长一段时间后,发起一次攻击。因此需要引入时间上限来控制币龄的增长。

2.流通性问题,起初,代币依靠质押挖矿获得,记账权只在创世区块上,很难分散出去,所以目前很多项目采用混合挖矿的方式进行,先以PoW进行一段时间后再转为PoW。例如以太坊。

3.更加混乱,不再像PoW那样需要大量能耗,所以成本非常低,导致分叉也十分方便,这个问题也被称为Nothing at stake(无成本利益)问题,针对此类安全性缺陷,以太坊将通过信标链Casper共识协议来弥补。

4.趋向中心化,大的节点可以从二级市场买币,将代币集中在手里,其他节点的投票也变得没有意义,逐渐趋向于中心化。

5.设计复杂,复杂的设计容易出现更多漏洞,除了已经暴露出来的问题外,可能还存在其他未暴露的问题,毕竟测试网不能100%代表主网。

4.最后

无论是PoW还是PoS,目前出现的共识机制中,并没有一种完美的解决方案,不过随着技术的发展,未来肯定会出现更适用,更完善的机制。按照以太坊的规划,目前分为4个版本,分别是前沿、家园、大都会、宁静。前3个版本使用PoW共识机制,到宁静时,再转为PoS机制,能否处理好PoS机制目前所暴露出来的问题,将是以太坊2.0上线的关键。

...全文
189 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
Ethereum中文社区
加入

114

社区成员

这里是由区块链、以太坊、Web3.0、元宇宙等相关技术组成的国内最大的开发者聚集地,帮助社区成员快速获得更全面、更深度的技术信息,链接更多资源,让开发者更好地入门学习、成长与应用实践。
社区管理员
  • ETHPlanet
  • 活动助手
帖子事件
编辑了帖子
2022-06-22 16:37
创建了帖子 (查看)
2022-06-22 15:53
社区公告

Hi,欢迎加入我们!

 

在这里你可以:

  • 获取最官方最新最全的区块链、以太坊、Web3.0学习内容与资源
  • 获取行业内更有价值的研讨会、公开课资源,或参与社区发起的主题活动课程
  • 获得专业的以太坊、区块链、Web3.0相关技术资深专家/讲师的回复或指导,突破学习瓶颈
  • 进行学习打卡、提问或回答问题,提高个人或在社区的影响力,将有机会与各大技术官方深度合作
  • 参与丰富的社区活动,获得更多学习资源、行业资源等
  • 结识更多行业伙伴,参与线上/线下课程、交流会,拓展行业交流圈

 

【最新活动】:

1、6月1日21:00-21:30,DappLearning Infura AMA(线上)点击查看详情