以太坊技术系列-以太坊共识机制
区块链的特点之一是去中心化。也就是节点会分布在各个地方组成分布式系统。各个节点需要对1个问题达成一致,理想情况下,只需要同步状态即可。
如上图所示 B节点将a=1= a=2的状态同步给 ACDE四个节点,这时系统中状态变为a=2, 但如果其中有恶意节点 AE 收到通知后把a=1=a=3修改为错误的节点,这个时候大家的状态就不一致了,此时需要共识机制使系统中得到1个唯一正确的状态。
如上面说到分布式系统存在恶意节点导致系统中状态不一致的情况有1个比较著名的虚拟问题-拜占庭将军问题。
拜占庭将军问题是指,N个将军去攻打一座城堡,如果大于一定数量的将军同时进攻则可以攻打成功,如果小于则进攻失败。将军中可能存在叛徒。
这个时候有2种情况
1.如果2个叛徒都在BCDE中,那么共识算法需要让其余2个将军听从A的正确决策进攻城堡。
2.如果A是1个叛徒,共识算法需要让BCDE中剩余的3个忠诚将军保持一致。
这个问题有很多种解法,大家有兴趣可以自行查阅(推荐学习PBFT),我们重点来看看以太坊中目前正在使用的Nakamoto 共识和将要使用的 Casper Friendly Finality Gadget共识是如何解决拜占庭将军问题的。
说到Nakamoto共识和Casper Friendly Finality Gadget共识可能大家不太熟悉,但他们的部分组成应该都比较熟悉-POW(工作量证明)和POS(权益证明)。
POW或POS称之为Sybil抗性机制,为什么需要Sybil抗性机制呢,刚刚我们说到拜占庭将军问题,应该很容易看出恶意节点越多,达成正确共识的难度也就越大,Sybil攻击就是指1个攻击者可以伪装出大量节点来进行攻击,Sybil抗性是指抵御这种攻击能力。
POW通过让矿工或验证者投入算力,POS通过让验证者质押以太坊,如果攻击者要伪装多个节点攻击则必将投入大量的算力或资产,会导致攻击成本高于收益。在以太坊中保障的安全性是除非攻击者拿到整个系统51%算力或资产否则不可能进攻成功。
在解决完Sybil攻击后,通过选取系统中的最长链作为大家达成共识的链。
很多人平时为了简化将pow和pos认为是共识机制,这不够准确,但也说明了其重要作用,我们接下来分析pow和pos。
通过hash不可逆的特性,要求各个矿工不停地计算出某个值的hash符合某一特征,比如前多少位是000000,由于这个过程只能依赖不停的试错计算hash,所以是工作量证明。计算完成后其他节点验证的值符合hash特征非常容易验证。验证通过则成为成为合法区块(不一定是共识区块,需要在最长链中)。
以太坊中的挖矿算法用到2个数据集,1个小数据集cache,1个大数据集DAG。这2个数据集会随着区块链中区块增多慢慢变大,初始大小cache为16M DAG为1G。
我们先来看这2个数据集的生成过程
cache生成规则为有1个种子随机数seed,cache中第1个元素对seed取hash,后面数组中每个元素都是前1个元素取hash获得。
DAG生成规则为 找到cache中对应的元素后 根据元素中的值计算出下次要寻找的下标,循环256次后获得cache中最终需要的元素值进行hash计算得到DAG中元素的值。
然后我们再看看矿工如何进行挖矿以及轻节点如何验证
矿工挖矿的过程为,选择Nonce值映射到DAG中的1个item,通过item中的值计算出下次要找的下标,循环64次,得到最终item,将item中的值hash计算得到结果,结果和target比较,符合条件
则证明挖到区块,如果不符合则更换nonce继续挖矿。矿工在挖矿过程中需要将1G的DAG读取到内存中。
轻节点验证过程和矿工挖矿过程基本一致,
将块头里面的Nonce值映射到DAG中的1个item,然后通过cache数组计算出该item的值,通过item中的值计算出下次要找的下标,循环64次,得到最终item,将item中的值hash计算得到结果,结果和target比较,符合条件则验证通过。轻节点在验证过程中不需要将1G的DAG读取到内存中。每次用到DAG的item值都使用cache进行计算。
以太坊为什么需要这2个不同大小的数组进行辅助hash运算呢,直接进行hash运算会有什么问题?
如果只是进行重复计算会导致挖矿设备专业化,减少去中心化程度。因为我们日常使用的计算机内存和计算力是都需要的,如果挖矿只需要hash运算,挖矿设备则会设计地拥有超高算力,但对内存可以缩小到很小甚至没有。所以我们选用1G的大内存增加对内存访问的频率,增加挖矿设备对内存访问需求,从而更接近于我们日常使用的计算机。
我们看看在Nakamoto共识是如何解决拜占庭将军问题的。首先看看区块链中的拜占庭将军问题是什么?
区块链中需要达成一致的是哪条链为主链,虽然采用了最长链原则,但由于分叉问题,还是会带来拜占庭将军问题。
本来以太坊pow目标是抵抗51%以下的攻击,但如上图如果恶意节点沿着自己挖出的区块不断挖矿,由于主链上有分叉存在,恶意节点不需要达到51%算力就可以超过主链进而成为新的主链,为此以太坊使用了ghost协议给上图中的B1和C1也分配出块奖励,尽快合并到主链中,这样主链长度(按照合并后的总长度算,长度只是抽象概念,以太坊中按照区块权重累加)还是大于恶意节点自己挖矿的。
网络中的用户通过质押一定数量的以太坊成为验证者。每次系统从这些验证者从随机选择出区块创建者,其余验证者去验证创建出的区块是否合法。验证者会获得出块奖励,没有被选中的区块不进行验证则会被扣除一定质押币,如果进行错误验证则会被扣除全部质押币。
如上图,权益证明在每隔一定区块的地方设置一个检查点,对前面的区块进行验证,2/3验证者通过则验证通过,验证通过则该区块所在链成为最长合法链(不能被回滚)。
我们简化地只分析了权益证明本身,在以太坊中权益证明较为复杂的点在于和分片机制结合在一起时的运行流程,这部分会在后面单独将分片机制的一篇文章中详述。
本篇文章主要讨论了共识机制是解决分布式系统中的拜占庭将军问题,以及分析了以太坊中的共识机制一般包括最长链选择和一种sybil抗性机制(pow或pos)。重点分析了pow和pos的流程以及设计思想。后续将开始重点讨论智能合约的部分。
以太坊切换到pos阶段对挖矿有什么影响
就是不能挖矿了,属于以太坊开发的第三个阶段,大都会阶段,此时进入POS,节能,权益证明,新以太坊产生变少。
以太坊转pos对挖矿给有影响
有专家声称加密货币消耗了太多能量,效率低并且对环境不友好。还有一些报告显示,挖掘加密货币比开采黄金消耗更多的能源。
使用Solidity进行以太坊智能合约开发;通过web3.js与以太坊区块链数据进行交互;众筹智能合约与代币智能合约项目实战案例。
本书内容丰富,讲解通俗易懂,案例典型,实用性强,特别适合区块链技术爱好者和智能合约开发的相关从业人员阅读,也适合区块链底层研究人员阅读。另外,本书还适合区块链培训机构作为相关课程的培训教材。
内容简介:
本书从区块链的概念、原理、核心技术和应用四个方面,系统地介绍了以太坊区块链开发的相关知识。其中,重点介绍了以太坊的相关概念和原理、以太坊客户端Geth、以太坊常用智能合约开发工具、Solidity语言和智能合约开发等内容。
并介绍了众筹合约和代币合约两个项目实战案例,可以让读者对智能合约开发的整体流程有一个全面的了解。另外,书中结合示例对web3.js的相关知识也做了详细介绍,以帮助读者更好地理解和利用以太坊的相关数据。
以太坊pos模式是什么意思
POS是一种在公链中的共识算法,可作为POW算法的一种替换。POW是保证比特币、当前以太坊和许多其它区块链安全的一种机制,但是POW算法在挖矿过程中因破坏环境和浪费电力而受到指责。POS试图通过以一种不同的机制取代挖矿的概念,从而解决这些问题。
【拓展资料】
POS机制可以被描述成一种虚拟挖矿。鉴于POW主要依赖于计算机硬件的稀缺性来防止女巫攻击,POS则主要依赖于区块链自身里的代币。在POW中,一个用户可能拿1000美元来买计算机,加入网络来挖矿产生新区块,从而得到奖励。而在POS中,用户可以拿1000美元购买等价值的代币,把这些代币当作押金放入POS机制中,这样用户就有机会产生新块而得到奖励。在POW中,如果用户花费2000美元购买硬件设备,当然会获得两倍算力来挖矿,从而获得两倍奖励。同样,在POS机制中投入两倍的代币作为押金,就有两倍大的机会获得产生新区块的权利。
众所周知,第三季度的“DeFi热”促使以太坊网络上的交易量大幅增加,DappRadar 2020 Q3 Dapp报告指出,以太坊交易量在2020年第三季度猛增至1195亿美元,与第二季度相比增长了近1200%,但随着而来的是网络堵塞,交易费猛增。在今年9月9日,以太坊平均交易费用达到14美元的高度,刷新历史记录。因费用飙升,导致许多交易只能延迟。
EOS创始人BM感叹称:对于大多数正常规模的交易来说,以太坊交易费用太高了。
目前的以太坊仍然面临多重问题,首先老生常谈的是上面提到的交易处理,以太坊网络支持数千个去中心化应用程序,每秒都需要处理大量交易,而采用PoW共识机制的以太坊1.0,每秒只能处理约10-50笔交易,远小于PayPal、Visa 等中心化网络,远无法满足用户对于交易速度的需求。手续费高昂一直是以太坊被诟病的一个重要的点,V神直言,在rollups和分片完成之前,以太坊别无选择,只能忍受高额交易费。因此以太坊需要升级。
以太坊基金会:ETH将在未来几个月转向PoS 能源消耗至少减少99.95%
长话短说:以太坊在合并完成后的能源消耗至少能减少99.95%。
以太坊将在接下里的几个月完成向权益证明(PoS)共识机制的过渡,这带来了无数种已被理论化的改进。但既然信标链( Beacon chain)已经运行了几个月的时间,我们实际上就可以深入研究具体的数字了。我们很高兴 探索 的一个领域涉及新的能源使用估算,因为我们将结束在共识上花费一个国家所耗能源价值的过程。
截至目前,还没有任何关于能源消耗(甚至使用什么硬件)的具体统计数据,因此下面是对以太坊未来能源消耗的粗略估算。
由于很多人都在运行多个验证器,因此我决定使用可存款的独立地址的数量,来作为今天有多少台服务器的代理数。很多质押者可以使用多个 ETH 1.0地址,但这在很大程度上抵消了那些冗余设置。
在撰写本文时,有来自16405个独立地址的140592个验证器。显然,这是由于交易所和staking质押服务造成的偏差,因此移除它们会导致有87,897个验证器被假定是在家里质押的。作为一个健全的检查,这意味着平均每个家庭质押者运行了5.4个验证器,这对我来说似乎是一个合理的估计值。
能源要求
运行一个信标节点(BN)、5.4个验证器客户端(VC)以及一个以太坊1.0全节点需要多少能量?以我的个人设置为基础,大约是15瓦。Joe Clapis(Rocket Pool开发者)最近运行了10个验证器客户端(VC),1个Nimbus信标节点(BN)以及1个10Ah USB电池组的Geth全节点,然后运行了10个小时,这意味着这个设置平均为5瓦。而一般的投资人不太可能运行这样的优化设置,所以我们取100 瓦作为参考数。
将其与之前的87000个验证器相乘,就意味着家庭质押者的消耗电量约为1.64兆瓦。估计托管质押者所消耗的能源会更多一些,他们运行了成千上万个具有冗余和备份的验证器客户端。
为了简化计算,我们还假设他们每5.5个验证器使用100瓦。基于我所接触过的基础设施团队,这是一个粗略的高估值。真正的答案要少50倍左右(如果你是一个质押托管团队,并且每个验证器消耗电量超过5瓦,我相信我可以为你提供帮助)。
因此,总的来说,采用权益证明(PoS)的以太坊网络会消耗大约2.62兆瓦的电量。这不是一个国家的用电规模,也不是省甚至城市的用电规模,而大约是一个小镇(约2100个美国家庭)的用电规模。
作为参考,当前工作量证明(PoW)以太坊网络所消耗的能量相当于一个中等国家的能源,但这实际上是保持PoW链安全所必需的。顾名思义,PoW达成共识的基础是哪个分叉在这方面做的“工作”最多。有两种方法可以提高“工作”完成率,一是提高挖掘硬件的效率,二是同时使用更多的硬件。为了防止区块链被成功攻击,矿工必须比攻击者更快的速度“工作”。由于攻击者很可能拥有类似的硬件,矿工必须保持大量高效的硬件运行,以防攻击者挖出它们,所有这些硬件都会消耗大量的能量。
在PoW共识机制下, ETH 价格与算力正相关。因此,随着价格的上涨,在均衡状态下,网络消耗的电力也会随之增加。而在PoS共识机制下,当 ETH 价格上涨时,网络的安全性也会提高( ETH 的价值更高),但对能源的需求保持不变。
一些比较
据数字经济学者估计 ,以太坊矿工目前每年要消耗44.49太瓦时的电量,这意味着,根据上述保守估计,PoS的能效提高了约2000倍,这反映了总能源使用量至少减少了99.95%。
如果每笔交易的能耗高于你的速度,则约为35Wh/tx(平均约60K gas/tx)或TV约20分钟的耗电量。相比之下,以太坊PoW每笔交易使用相当于一栋房子2.8天的能量,比特币的每笔交易则消耗相当于一栋房子38天的能量。
展望未来
尽管以太坊目前仍在使用PoW共识机制,但这种情况不会持续太久。在过去的几周里,我们看到了第一批用于合并的测试网的出现(注:The Merge合并是以太坊从PoW切换到PoS时的名称)。几个工程师团队正在加班加点地工作,以确保合并尽快到来,同时又不影响安全性。
扩容解决方案(例如rollup和分片)将通过利用规模化经济来帮助进一步减少每次交易消耗的能量。
以太坊网络超级耗电的日子屈指可数了,我希望这个行业的其他部分也是如此。
如何简单理解以太坊的POS机制
不再通过挖矿提供算力争夺记账权获得奖励的eth,而是通过持有eth派息,类似于银行存款的利息。
对于ethpos和的总结分享本篇到此就结束了,不知你从中学到你需要的知识点没 ?如果还想了解更多这方面的内容,记得收藏关注本站后续更新。
标签: 以太
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。