草庐IT

北大肖臻老师《区块链技术与应用》系列课程学习笔记[20]以太坊-权益证明

Unicorn_snow 2024-02-08 原文

目录

一、为什么要转入权益证明

        1.比特币系统的相关数据 

        2.以太坊的统计数据

        3.比特币和以太坊当成一个国家

二、思考

        1.矿工为什么要挖矿?

        2.为什么要给矿工这些收益,这些出块奖励呢?

        3.矿工具体是怎么挖矿的呢?

        4.那挖矿的收益是由什么决定的?

三、权益证明

        1.权益证明的特点

        2.权益证明与工作量证明相比的优点

        3.权益证明和工作量证明混合模型        

        4.Proof of Stake

        5.以太坊中准备采用的权益证明协议

        6.思考

一、为什么要转入权益证明

1.比特币系统的相关数据 

        权益证明(Proof of Stake),比特币和以太坊目前都是基于工作量的证明,这种共识机制的一大典型缺点就是浪费电。下图1-1显示比特币能耗随时间变化的情况,y轴是TWh(TeraWatt Hours:),KWh(Kilowatt hours:,也就是千瓦时、一度电的意思),从图中可以看出,比特币能耗随时间是不断增长的。

图1-1

        具体统计数据如下图所示:

图1-2

2.以太坊的统计数据

        以太坊的能耗也是随时间增长的,中间有一些波动如下图1-3所示。

图1-3

        具体的数据如下图1-4所示 。 

图1-4

        从道理上讲,比特币的交易是比较简单的,只有一些单纯的转账交易,以太坊的交易有可能包含对智能合约的调用,但实际上,以太坊的能耗比比特币低了很多。因为比特币出块时间长,比特币平均出块时间是10min,以太坊则是15s,所以以太坊挖矿挖的时间就短,每个交易平均下来的能耗就小,当然以太坊的交易能耗仍然比信用卡公司高很多。

3.比特币和以太坊当成一个国家

        如果把比特币和以太坊的能耗加在一起当作一个国家来算的话,他在国家中的排行榜入下图1-5所示。

图1-5

二、思考

1.矿工为什么要挖矿?

        为了取得出块奖励,为了获得收益。

2.为什么要给矿工这些收益,这些出块奖励呢?

        为了激励矿工参与区块链的维护。

3.矿工具体是怎么挖矿的呢?

        需要找一笔挖矿资金,然后去买挖矿设备,如矿机、GPU等,然后开始挖矿。

4.那挖矿的收益是由什么决定的?

        投入的资金决定的。收益由挖矿多少决定,挖矿多少由算力决定,算力由矿机决定,矿机由投入资金决定。既然最终是拼钱,那直接把钱拿出来比一比不就行了,矿工通过竞争算力来决定挖矿的收益如何分配,能不能改成直接靠比钱的多少来决定收益,都把钱投入区块链开发,按照每个人投入的资金的多少来决定收益的分配,这个就是权益证明的一个基本思想,这种方法也叫做Virtual Mining虚拟挖矿。

三、权益证明

1.权益证明的特点

        采用权益证明的加密货币,一般在正式发行之前,会先预留一部分货币给开发者,也会出售一部分货币,来换取开发这个加密货币所需要的资金,按照权益证明的共识机制每个人是按照持有货币的数量来进行投票的。

2.权益证明与工作量证明相比的优点

(1)省去了挖矿的过程,避免了由此带来的能耗和对环境的影响,减少了温室气体的排放。

(2)发动攻击的资源只能从加密货币系统内部得到。

        基于工作量证明的共识系统从某种意义上来说,维护区块链安全的资源不是一个闭环,Block chain is secured by mining,用美元可以购买矿机,然后参与挖矿,资源是可以从加密货币系统的外面得到的。虽然近几年加密货币的市值有了很大的增长,但无论怎么说,跟世界经济总量相比,仍微乎其微。所以,如果有某个组织想要发动恶意攻击,只需用足够的资金购买挖矿设备,然后聚集到加密货币总算力一半以上的算力即可。外部的资源都可以转化成挖矿的算力,转换成对这个加密货币攻击的这种能力。像比特币这样比较主流的加密货币,抗攻击的能力还是相对比较强的,因为系统的总算力还是比较大的,如果是这些刚刚发行的小币种,这种遇到这样的攻击可能就是致命性的。如果这种小币种刚刚发行不久,就遇到这种攻击,那么很可能这个币价就直线下降甚至归零了,对于这个开发者和早期矿工来说,遭受的损失可能是灾难性的。AltCoin Infanticide,AltCoin:小币种,Infant:婴儿,Infanticide:扼杀在摇篮里。不等这个加密货币长大,就把它先干掉了。

        权益证明类似于股份制公司按每人占的股份进行投票权益证明是按照你有多少该币种的币进行投票的,所以如果有某个人想发动恶意攻击,比如说51%的攻击,首先要获得这个币种发行量一半以上的份额才行,也就是说发动攻击的资源只能从加密货币系统内部得到,这就是为什么说他是一个闭环。买到足够多的币才能发动攻击,而一旦有人大量买入加密货币,会出现价格大涨,有点类似于股份制公司遭受恶意收购,所以说工作量证明的系统维护安全的资源不是一个闭环,权益证明才是一个闭环。

3.权益证明和工作量证明混合模型        

        权益证明和工作量证明并不是互斥的。有的加密货币采用的是一种混合模型,他仍然是要挖矿的,但是挖矿的难度跟你占有的权益,你持有币的数量相关。即持有的币越多,挖矿的难度就越小,根据持有的这个币的权益降低调整你的挖矿难度。当然,这其实也有一定问题,这样的话,系统中持有币数量最多的那个人,每次挖矿都是最容易的。所以,有的加密货币要求你投入的币会被锁定一段时间,不能重复使用,这种情况叫做Proof of Deposit。

4.Proof of Stake

        如下图3-1所示是我们之前学习过的出现分叉的情况,按照之前的情况是要么按照上方链挖,要么按照下方链挖,一般是会沿着上方链挖,因为它是最长合法链,但是下面那条链也有可能成为最长合法链,但是一般不会两边都挖,因为这样做算力分散了,挖到矿的概率就小了。

图3-1

        用权益证明的话,可以两边都下注,如果上面那条链成为最长合法链,下面那条链锁定的那些币是没有影响的。挖下面区块投入的那些币,只记录在下面的分叉上,并不影响你在上面分叉的使用,这种情况叫nothing at stake,这是早期基于权益证明遇到的一个问题。

5.以太坊中准备采用的权益证明协议

(1)过渡阶段

        以太坊中准备采用的权益证明协议叫做Casper the Friendly Finality Gadget(FFG),在过渡阶段跟工作量证明混合使用,为工作量证明提供Finality,Finality是一种最终的状态,包含在Finality中的交易不会被取消,单纯基于工作量证明的交易是有可能被回滚的,比特币中规定要等六个确定区块,意思是等了六个确定区块之后,发生回滚的可能性已经非常小了,但是有个某个有恶意的攻击者,从前面开始分叉,只要他算力足够强占到半数以上的算力,那么仍然有可能让这个分叉链变得比原来的链更长,所以单纯基于挖矿的是缺乏这种Finality。

(2)Casper协议
        引入了一个概念叫做验证者Validator,要想成为一个Validator必须要投入一定数量的以太币作为保证金,这个保证金会被系统里面锁定住。Validator的职责是要推动系统达成共识,投票决定那条链是最长合法链,投票的权益决定于保证金的数目大小,具体的做法类似于数据库里的Two-phase commit。

        混用的时候还是有人挖矿的,挖矿每挖出100个区块就作为一个epoch,然后决定能不能成为Finality,要进行一些投票,第一轮投票是Prepare Message,然后第二轮是Commit Message,Casper规定每一轮投票都要得到2/3的验证者才能通过(按照保证金的金额大小来算)。实际系统当中不再区分这两个Message,而且把这个epoch从原来的100个区块减少到50个区块,变成了每50个区块就是一个epoch,每个epoch只用一轮投票的就行了,这一轮投票对于上一个epoch来说是个Commit Message,对于下一个来说是一个Prepare Message,要连续两轮投票,两个epoch都得到2/3以上的多数,才算有效,如下图3-2所示 。

图3-2

        验证者参与有什么好处呢?
        如果验证者履行职责的话,可以得到相应的奖励,就像矿工挖矿能得到出块奖励一样,验证者做这个工作也可以得到这个奖励。但如果验证者有不良行为被发现的话,要受到相应的处罚,比如某个验证者行政不作为,该投票的时候不去投票,导致系统迟迟达不成共识,这种情况下要扣掉他的一部分保证金。如果某个验证者乱作为(乱投票),给两个有冲突的分叉都投票,就两边下注,这种情况被发现的话,要没收全部的保证金,没收到保证金会被销毁,相当于减少了系统中以太币的总供应量。每个验证者有一定任期(即使你交了保证金也不是可以永远当验证者),任期满了之后要经过一定时间的等待期,等待期是为了让其他的验证者检举揭发这个验证者有没有什么不良的行为,进行惩处,如果等待期过了,没有什么问题,验证者可以取回当初的保证金并且得到的奖励。

6.思考

(1)Casper 协议可以给挖矿完成一个区块链的某一种状态做一个检查点,做一个check point,那这个check point是不是绝对安全的?通过这个验证者投票达成的Finality有没有可能被推翻?

        包含在Finality里的交易是不会被推翻的,这个是不是绝对的,假设有某个有恶意的组织要发动攻击,如果这个组织仅仅是矿工的话,他是没有办法推翻已经达成的Finality,因为Finality是验证者投票投出来的,单纯是有恶意的矿工,无论他算力有多强,如果没有验证者作为同伙是不可能推翻的。

        攻击成功的情况:有大量的验证者两边下注。Casper 协议要求每轮投票有2/3的验证者支持才算通过,出现这种情况,至少是1/3的验证者是两边都投票的,一旦发现,1/3的验证者的保证金将会被没收,所以可以看到基于权益证明的共识机制和基于工作量证明的共识机制是很不一样的。

(2)以太坊是要逐步从工作量证明过渡到权益证明。随着时间的推移,挖矿得到的奖励是越来越少的,权益证明得到的奖励是越来越多的,最后达到完全不用挖矿的境界。以太坊为什么从一开始就不用权益证明呢?

        因为权益证明不够成熟,工作量证明比较成熟,经过了时间的检验。比特币和以太坊的挖矿算法都经历了Bug Bounty的检验,没有人发现什么漏洞,很多人认为权益证明是未来的方向,但是目前用的主流的加密货币用的还是工作量证明。有个叫EOS的加密货币,俗称叫柚子,是个曾经有很多人看好的加密货币,用的是权益证明,完全不用挖矿,但是不是用的Casper 协议,用的是DPOS(Delegated Proof of Stake)协议:先用一个投票的方法选出一个超级节点,然后再用这个超级节点产生区块。

(3)对于“挖矿消耗大量电能”这个观点有人提出了不同的看法
        他们认为其所消耗的电能所占比值并不大,而且其对于环境的影响是有限的。挖矿的一个好处是提供了把电能转化成钱的一种手段。而电能本身难以传输和存储,比特币矿产都是建在电力丰富的地方,所以有人认为挖矿消耗电能并不是坏事,可以有效的化解过剩产能,带动当地经济的发展。提供了将电转向加密货币的思路。

有关北大肖臻老师《区块链技术与应用》系列课程学习笔记[20]以太坊-权益证明的更多相关文章

  1. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  4. ruby - 如何证明 Ruby `for` 循环实际上是使用 `each` 方法实现的? - 2

    在EloquentRuby(第21页,第一版,第六次打印)一书中,作者(RussOlsen)提倡使用each方法而不是for循环,这与我在其他地方读到的所有内容一致。但是作者还继续说,这样做的一个原因是for循环实际上调用了each方法,所以为什么不直接删掉中间人并使用each?所以我想知道这实际上是如何工作的。为了调查,我确实在github上的Ruby存储库上进行了搜索,但发现很难确定我在哪里/如何看到它的实际效果。重述问题:我如何证明Rubyfor循环实际上是使用each方法实现的? 最佳答案 您可以通过编写一个实现每个的类来展

  5. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  6. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里 - 2

    当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在

  7. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  8. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  9. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  10. Ubuntu20.04系统WineHQ7.0安装微信 - 2

    提供3种Ubuntu系统安装微信的方法,在Ubuntu20.04上验证都ok。1.WineHQ7.0安装微信:ubuntu20.04安装最新版微信--可以支持微信最新版,但是适配的不是特别好;比如WeChartOCR.exe报错。2.原生微信安装:linux系统下的微信安装(ubuntu20.04)--微信适配的最好,反应最快,但是微信版本只到2.1.1,版本太老,很多功能都没有。3.深度deepin-wine6安装微信:ubuntu20.04+系统deepin-wine6安装新版微信--综合比较好,当前个人使用此种方法1个月,微信版本3.4;没什么大问题,尚可。一、WineHQ7.0安装微信

随机推荐