eth的共识算法
比特币和以太坊是pow算力挖矿。ipfs是存储即挖矿,新型模式。
『贰』 区块链技术中的共识算法
关于区块链技术的一些讲解和知识点分析我们已经给大家分享过很多次了。今天,霍营java课程就再来了解一下,区块链技术中的共识算法的一些基本定义与特点。
简单过一下区块链
我们一般意识形态中的链是铁链,由铁铸成,一环扣一环。形象地,区块链的也可以这么理解,只不过它不是由铁铸成,而是由拥有一定数据结构的块连接而成,这是一个简单的雏形
通俗讲解共识
所谓共识,通俗来说,就是我们大家对某种事物的理解达成一致的意思。比如说日常的开会讨论问题,又比如判断一个动物是不是猫,我们肉眼看了后觉得像猫,其满足猫的特征,那么我们认为它是猫。共识,是一种规则。
继续我们的会议例子。参与会议的人,通过开会的方式来达到谈论解决问题。
对比区块链中,参与挖矿的矿工通过某种共识方式(算法)来解决让自己的账本跟其他节点的账本保持一致。让账本保持一致的深入一层意思就是,让链中区块信息保持一致。
为什么需要共识,不需要可不可以?当然不可以,生活中没了共识的规则,一切乱套。区块链没了共识的规则,各个节点各干各的,失去一致的意义。
这两个例子的对应的关系如下:
会议的人=挖矿的矿工
开会=共识方式(算法)
谈论解决问题=让自己的账本跟其他节点的账本保持一致
如果你对节点的概念意思不懂,请先理解为矿工,一个节点内部包含很多角色,矿工是其中之一。
共识算法
目前常见的在区块链中,节点们让自己的账本跟其他节点的账本保持一致的共识方式(算法)有如下几种:
PoW,代表者是比特币(BTC)
弊端:
矿池的出现,一定程度上违背了去中心化的初衷,同时也使得51%攻击成为可能,影响其安全性。
存在巨大的算力浪费,看看矿池消耗大量的电力资源,随着难度增加,挖出的不够付电费
PoS,代表者是以太坊(ETH),从PoW过度到PoS
弊端:
破坏者对网络的攻击成本很低,拥有代币就能竞争
另外拥有代币数量大的节点获得记账权的概率会更大,会使得网络共识受少数富裕账户支配,从而失去公正性。
『叁』 拜占庭将军问题与主要公链与联盟链的处理方式
拜占庭将军问题与主要公链与联盟链的处理方式
拜占庭将军问题是描述分布式系统一致性问题的经典案例。在分布式系统中,各个节点(如拜占庭将军)需要就某个决策达成一致,但系统中可能存在恶意节点(如叛徒),这些节点可能故意发送错误的信息以破坏一致性。共识算法的核心就是解决拜占庭将军问题,即确保分布式网络中的节点能够达成一致。
一、拜占庭将军问题的背景
拜占庭帝国想要进攻一个强大的敌人,为此派出了多支军队去包围这个敌人。这些军队需要同时攻击才能获胜,但他们之间通过通信兵相互通信来协商进攻意向及进攻时间。然而,他们不确定是否所有将军都是忠诚的,因为叛徒可能擅自变更进攻意向或进攻时间。在这种状态下,拜占庭将军们如何保证有多于一定数量的军队在同一时间一起发起进攻,从而赢取战斗?
二、主要公链的处理方式
比特币(BTC)
解决方案:工作量证明机制(POW,Proof of Work)
策略:要求节点进行一些耗时的复杂运算,以耗费的时间、设备电力作为成本的一种担保机制。这种机制提高了做叛徒的成本,因为叛徒需要投入大量的计算资源来篡改区块链。
效果:通过最长选择链(即最长的区块链)来达成共识,确保网络中的大多数节点都遵循相同的区块链历史。
以太坊(ETH)
解决方案:权益证明机制(POS,Proof of Stake)
策略:使用伪随机数或其它规则指定质押代币的人为记账员或交易验证者,这些人通过验证交易来获得奖励或交易手续费。
效果:旨在提高比特币系统工作量证明方式不能解决的效率问题,同时保持网络的安全性。虽然以太坊目前仍采用工作量证明,但计划逐渐过渡到权益证明。
三、联盟链的处理方式
IBM区块链技术HyperLedger/fabric
解决方案:拜占庭容错机制(PBFT,Practical Byzantine Fault Tolerance)
策略:PBFT可以容忍投票的人中产生叛徒或者不响应的情况。当有f个节点未响应或出错时,为了保证系统的正常,需要总共有3f+1个节点进行投票。
效果:通过拜占庭容错算法,HyperLedger/fabric能够在存在恶意节点的情况下保持网络的一致性和安全性。
四、总结
共识机制的根本作用是构建一个既安全又符合其社区需求与发展的生态系统。不同的区块链项目根据自身的特点和需求,采用了不同的共识算法来解决拜占庭将军问题。比特币通过工作量证明机制确保了网络的安全性,但牺牲了效率;以太坊则计划通过权益证明机制来提高效率;而IBM的HyperLedger/fabric则采用了拜占庭容错机制,以在联盟链环境中保持网络的一致性和安全性。这些共识算法各有优劣,且随着技术的发展和市场的变化,可能会不断演变和完善。
『肆』 以太坊经典是什么
1.什么是以太经典?
ETC(Ethereum Classic)是以太坊在1,920,000个块后硬分叉出的分叉币种,功能和以太坊极为类似。ETC秉承去中心化理念,支持区块链保证的共识机制。ETC坚信,区块链一旦开始运行,它的发展方向就不被任何中心团队所左右,而是按照参与整个网络人员的共识和全网算力的共识所决定。
2016年7月份进行的以太坊区块链硬分叉旨在将被黑客盗窃的The DAO资金转移到一个由投资者掌控的账户,并让旧的交易记录被历史遗忘。大多数以太坊开发者都参与了这次逆转,交易所、创业公司和该生态系统中的其他成员也参与了。几天之后,该项目恢复了常态。但是并非所有人都想将旧的交易记录忘记。于是一小部分矿工继续使用原来的区块链,以此作为一种抗议,他们将硬分叉描述为是对The DAO这个废弃项目的抽资行为。于是Ethereum Classic(ETC)就诞生了。
2.详细参数
中文名:以太经典 英文名:Ethereum Classic 英文简称:ETC
研发者:以太经典团队 核心算法:Ethash 共识证明:POW
发布日期:2016/7/20 区块时间:约15-17秒/块
货币总量:固定为2.1亿,最高不超过2.3亿,每500万个区块减速20%,第一次减产时间预计为2017年12月
主要特色:独立的加密货币
『伍』 以太坊2.0、POS、信标链和分片都是些啥
以太坊2.0、POS、信标链和分片都是以太坊区块链协议的重要升级部分,旨在解决其当前存在的问题,包括性能、安全性和可持续性。以下是这些概念的概述:
以太坊2.0(或简称为ETH2.0)是一个重大升级,旨在解决以太坊区块链的三大问题:
性能:当前每秒仅能处理十几笔交易,无法支持去中心化的通用计算平台愿景。目标是提高到至少每秒支持1000笔交易。
安全性:以太坊共识机制为POW(工作量证明),导致算力集中,不利于去中心化和网络安全性。以太坊2.0计划采用POS(权益证明)共识机制,让更多的普通用户参与共识过程。
可持续性:POW共识机制高耗能,不利于环保。以太坊2.0将采用不消耗大量电力的新共识算法。
为实现以上目标,以太坊2.0引入了两大机制:
POS(权益证明):与POW(工作量证明)相比,POS参与者(验证者)只需质押一部分虚拟资产,无需消耗大量电力或购买专用硬件,提高了普通用户参与度和环保性。
分片(Shard):通过分片链技术,以太坊可以同时运行多条区块链,每条链负责处理部分交易,提高性能并降低节点硬件要求,增加去中心化程度。
以太坊2.0的升级将分阶段进行,主要包括:
第0阶段:信标链上线,实现POS机制并协调同步后的分片链。
第1阶段:64个分片链上线并与信标链连接,实现数据存储和智能合约执行。
第2阶段:实现以太坊虚拟机,提供通用计算能力。
目前信标链已上线,信标链和现有以太坊区块链并行运行,不直接影响当前的以太坊区块链。在第1阶段,原始以太坊区块链将作为第一个分片链加入,POW挖矿将退出历史舞台。以太坊2.0的完整实现仍需多个阶段的逐步推进。
最后,以太坊2.0的POS机制和分片链技术将带来更高的性能、更好的安全性和更高的环保性。如果您持有ETH,无需进行任何转换操作,但可以考虑质押ETH参与POS机制以获得收益,不过请务必了解风险并谨慎操作。
『陆』 011:Ethash算法|《ETH原理与智能合约开发》笔记
待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此文集记录我的学习笔记。
课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。
第四课分为三部分:
这篇文章是第四课第一部分的学习笔记:Ethash算法。
这节课介绍的是以太坊非常核心的挖矿算法。
在介绍Ethash算法之前,先讲一些背景知识。其实区块链技术主要是解决一个共识的问题,而共识是一个层次很丰富的概念,这里把范畴缩小,只讨论区块链中的共识。
什么是共识?
在区块链中,共识是指哪个节点有记账权。网络中有多个节点,理论上都有记账权,首先面临的问题就是,到底谁来记帐。另一个问题,交易一定是有顺序的,即谁在前,前在后。这样可以解决双花问题。区块链中的共识机制就是解决这两个问题,谁记帐和交易的顺序。
什么是工作量证明算法
为了决定众多节点中谁来记帐,可以有多种方案。其中,工作量证明就让节点去算一个哈希值,满足难度目标值的胜出。这个过程只能通过枚举计算,谁算的快,谁获胜的概率大。收益跟节点的工作量有关,这就是工作量证明算法。
为什么要引入工作量证明算法?
Hash Cash 由Adam Back 在1997年发表,中本聪首次在比特币中应用来解决共识问题。
它最初用来解决垃圾邮件问题。
其主要设计思想是通过暴力搜索,找到一种Block头部组合(通过调整nonce)使得嵌套的SHA256单向散列值输出小于一个特定的值(Target)。
这个算法是计算密集型算法,一开始从CPU挖矿,转而为GPU,转而为FPGA,转而为ASIC,从而使得算力变得非常集中。
算力集中就会带来一个问题,若有一个矿池的算力达到51%,则它就会有作恶的风险。这是比特币等使用工作量证明算法的系统的弊端。而以太坊则吸取了这个教训,进行了一些改进,诞生了Ethash算法。
Ethash算法吸取了比特币的教训,专门设计了非常不利用计算的模型,它采用了I/O密集的模型,I/O慢,计算再快也没用。这样,对专用集成电路则不是那么有效。
该算法对GPU友好。一是考虑如果只支持CPU,担心易被木马攻击;二是现在的显存都很大。
轻型客户端的算法不适于挖矿,易于验证;快速启动
算法中,主要依赖于Keccake256 。
数据源除了传统的Block头部,还引入了随机数阵列DAG(有向非循环图)(Vitalik提出)
种子值很小。根据种子值生成缓存值,缓存层的初始值为16M,每个世代增加128K。
在缓存层之下是矿工使用的数据值,数据层的初始值是1G,每个世代增加8M。整个数据层的大小是128Bytes的素数倍。
框架主要分为两个部分,一是DAG的生成,二是用Hashimoto来计算最终的结果。
DAG分为三个层次,种子层,缓存层,数据层。三个层次是逐渐增大的。
种子层很小,依赖上个世代的种子层。
缓存层的第一个数据是根据种子层生成的,后面的根据前面的一个来生成,它是一个串行化的过程。其初始大小是16M,每个世代增加128K。每个元素64字节。
数据层就是要用到的数据,其初始大小1G,现在约2个G,每个元素128字节。数据层的元素依赖缓存层的256个元素。
整个流程是内存密集型。
首先是头部信息和随机数结合在一起,做一个Keccak运算,获得初始的单向散列值Mix[0],128字节。然后,通过另外一个函数,映射到DAG上,获取一个值,再与Mix[0]混合得到Mix[1],如此循环64次,得到Mix[64],128字节。
接下来经过后处理过程,得到 mix final 值,32字节。(这个值在前面两个小节《 009:GHOST协议 》、《 010:搭建测试网络 》都出现过)
再经过计算,得出结果。把它和目标值相比较,小于则挖矿成功。
难度值大,目标值小,就越难(前面需要的 0 越多)。
这个过程也是挖矿难,验证容易。
为防止矿机,mix function函数也有更新过。
难度公式见课件截图。
根据上一个区块的难度,来推算下一个。
从公式看出,难度由三部分组成,首先是上一区块的难度,然后是线性部分,最后是非线性部分。
非线性部分也叫难度炸弹,在过了一个特定的时间节点后,难度是指数上升。如此设计,其背后的目的是,在以太坊的项目周期中,在大都会版本后的下一个版本中,要转换共识,由POW变为POW、POS混合型的协议。基金会的意思可能是使得挖矿变得没意思。
难度曲线图显示,2017年10月,难度有一个大的下降,奖励也由5个变为3个。
本节主要介绍了Ethash算法,不足之处,请批评指正。
『柒』 浠ュお鍧婄殑pos鏄浠涔堟剰鎬
浠ュお鍧婏紙Ethereum锛夋槸涓绉嶅幓涓蹇冨寲鐨勫紑婧愬尯鍧楅摼骞冲彴锛孭oS鏄鎸囨潈鐩婅よ瘉锛圥roof of Stake锛夎繖绉嶅叡璇嗙畻娉曘侾oS鏈哄埗涓庝箣鍓嶆瘮鐗瑰竵鐨凱oW锛圥roof of Work锛夋満鍒朵笉鍚岋紝瀹冧娇鐢ㄦ姷鎶兼潵楠岃瘉鍖哄潡鎻愪氦锛岄獙璇佽妭鐐逛笉鍐嶉渶瑕侀氳繃绠楀姏鏉ヨ幏寰楄拌处鏉冿紝鑰屾槸閫氳繃鎸佹湁涓瀹氭暟閲忕殑浠e竵锛屼緥濡侲TH锛屾潵鑾峰緱鏉冪泭璇佹槑锛岃繖鏍峰彲浠ュ噺灏戦渶瑕佽楄垂澶ч噺璁$畻璧勬簮鐨勭畻鍔涚珵璧涳紝淇濊瘉缃戠粶鐨勫畨鍏ㄦэ紝骞朵笖鍙浠ラ伩鍏嶇被浼兼瘮鐗瑰竵PoW鏈哄埗閫犳垚鐨勯珮鑳借楀拰璁$畻璧勬簮娴璐归棶棰樸
鍦ㄤ互澶鍧奝oS鏈哄埗涓锛屽弬涓庨獙璇佸尯鍧楃殑鑺傜偣锛岄渶瑕佹姷鎶间竴瀹氭暟閲忕殑ETH锛岃繖浜汦TH浼氶攣瀹氬湪鏅鸿兘鍚堢害涓锛岀洿鍒拌妭鐐归鍑洪獙璇併傝妭鐐瑰彲浠ラ夋嫨鍔犲叆鏌愪釜鐗瑰畾鐨勯獙璇佽妭鐐规睜锛岃繖鏍蜂細澧炲姞瀹冭幏寰楄拌处鏉冪殑鍑犵巼銆傞獙璇佽妭鐐硅閫変腑鍚庯紝瀹冧滑闇瑕侀獙璇佸苟鎵撳寘浜ゆ槗锛岀劧鍚庡皢浜ゆ槗鍙戦佽嚦鍖哄潡閾剧綉缁溿傛墍鏈夐獙璇佽妭鐐归兘鏈夋満浼氳閫変腑鎸栫熆锛屼絾閭d簺鎷ユ湁鏇村氫唬甯佺殑鑺傜偣锛屽叾鑾峰緱鐨勮拌处鏉冧篃浼氭洿澶氥備竴鏃﹁妭鐐瑰畬鎴愰獙璇佷换鍔″苟鎴愬姛鎻愪氦鍖哄潡锛屽氨浼氳幏寰椾竴瀹氭暟閲忕殑濂栧姳ETH銆
鐩稿逛簬PoW鏈哄埗锛孭oS鏈哄埗鍏锋湁浠ヤ笅浼樺娍锛 鍑忓皯鑳芥簮娑堣楋紝闄嶄綆缃戠粶鐨勭幆澧冨奖鍝嶏紱 鎻愰珮鎺ㄥ嚭鏂板尯鍧楃殑閫熷害锛屽姞閫熶氦鏄撶‘璁ゅ苟闄嶄綆浜ゆ槗鎴愭湰锛 澧炲己浜嗚妭鐐圭殑鍙備笌鎬э紝浣垮緱姣忎釜浜洪兘鍙浠ュ弬涓庡苟鑾峰緱濂栧姳锛4. 鍑忓皯51%鏀诲嚮鐨勯庨櫓锛屽洜涓烘敾鍑昏呴渶瑕佸叆渚靛ぇ閲忕殑楠岃瘉鑺傜偣锛岃岃繖闇瑕佸ぇ閲忕殑浠e竵鎶垫娂銆傛讳箣锛屼互澶鍧奝oS鏈哄埗鏄涓绉嶆洿鍔犵幆淇濄佸叕骞冲拰瀹夊叏鐨勫叡璇嗘満鍒讹紝涓哄尯鍧楅摼鐨勫揩閫熷彂灞曟彁渚涗簡寮烘湁鍔涚殑鎶鏈鏀鎸併
『捌』 【Discover ETH】什么是权益证明PoS
本篇作为Discover系列文章的开篇,结合ETH2.0的目标,来谈谈权益证明PoS是什么。
在谈PoS之前,我们先来了解一下共识。共识,即达成了普遍协议。区块链实质上是一个全球性的状态机,达成共识意味着网络上至少有超过一半(51%)的节点同意网络的下一个全球状态。
共识机制 (也称为共识协议或共识算法)允许分布式系统(计算机网络)协同工作并保持安全。当前主流的共识机制有两种,分别是 工作量证明 (Proof of Work,PoW)和 权益证明 (Proof of Stake,PoS)。以太坊在设计之初就希望最终以太坊的共识机制能转变为PoS,而PoW只作为一个过渡阶段。但无论是PoW还是PoS,最终的目的都是相同的,即实现分布式计算机的共识机制。下面先简单了解工作量证明(PoW)的工作机制。
工作量证明通过矿工们完成,矿工们需要竞争创建最新区块以处理和完成交易。 获胜者将与网络中的其他节点分享最新区块,并且获得最新的特定代币区块奖励(如以太坊的以太币)。由于用户需要拥有超过网络中 51% 的算力才能够欺骗整条链,因此网络安全得以保证。 这将需要巨大的设备和能源投入,所需的开支甚至可能超过收益。
工作量证明是08年在中本聪所创造的比特币中提出的,至今已经经过了充分的考验和测试,但随着越来越多的矿工和矿池的加入,挖掘新的区块的难度指数爆发式上升,也面临的如下的问题:
PoS作为ETH2.0关键的建设目标,其作用不仅仅只是因为PoW带来的环境不友好的能源消耗,还有PoS的建设能更有力支持 分片链 (以太坊网络扩展的关键升级),更强的去中心化特性等等。下面从几个方面来简单谈谈权益证明PoS的工作过程。
在以太坊中,工作量证明的过程参与的角色是矿工/矿池。其目的是通过算力试错来反复计算,以此生成一个低于目标随机数的混合哈希。这个计算难度依赖于区块所声明的 难度 ,难度越小,有效的哈希值的集合就越小。而在权益证明中,则没有矿工这一角色,与之对应的是称之为 验证者 的角色。
在ETH2.0中,用户需要质押 32ETH 来获得作为验证者的资格。验证者被 信标链 随机选择去创建区块,并且负责检查和确认那些不是由他们创造的区块。他们不需要开采区块,他们只需要在被选中的时候创建区块并且在没有被选中的时候验证他人提交的区块。此验证被称为证明。
验证者因提出新区块和证明他们已经看到的区块而获得奖励,对于一些恶意验证者节点,也会有相应的惩罚机制使之失去质押。验证者质押的ETH越多,获得的奖励也越多。可以这样说,权益证明是一种用于激励验证者接受更多质押的机制。
前面提到了 分片链 这个名词, 分片 就是将区块链分成多条链。验证者将会在不同的分片上处理它们的分片数据,以此来提高区块链的工作效率。ETH2.0预计会有64个分片链。
验证者会被随机洗牌到不同的分片中,以防止验证者恶意操纵节点并提高链的安全性。处理不同分片之间的数据的关键角色就是 信标链 (Beacon Chain)。
信标链 是协调分片信息、管理验证者的连接不同分片的桥梁。
当用户在分片上提交交易时, 验证者 将负责将用户的交易添加到分片区块中。 信标链 通过算法选择验证器以提出新的块。如果一个验证者没有被选中提出一个新的分块,它们将会证明另一个验证者的提议,并确认一切都正常。
至少需要 128 个被称为 委员会 ( committee )的验证者来证明每个分片块。委员会有一个提出和验证分片区块的时限,这个时限被称为 插槽 ( Slot ),大约为12秒。 每个插槽只能创建一个有效区块,一个 周期 ( Epoch ,大约6.4分钟)有 32 个插槽。
每个周期过后,委员会都由不同的、随机的参与者解散与重组,重组过程由一个半随机算法 RANDAO 来选择,以此避免恶意节点的操纵。
ETH2.0使用 Cassper 终局协议来确认一个新的区块是否得到足够的证明,即只要2/3的插槽同意(即当前参与计算的2/3的验证者节点),该区块就会被最终确定。而推荐此区块的验证者将获得奖励。因此,在权益证明的机制下,每过6.4分钟就会创建一个新的区块。关于Cassper协议的详细说明后续再进行探索。
权益证明的建设以太坊在15年就已经提出,截止至今也才完成了Phase 0信标链的建设。而下一阶段的与主网合并,再下一阶段的分片链建设也一再推迟。虽然PoS的建设非常缓慢,但无论如何,权益证明作为主流的共识机制算法之一,也是值得我们探讨其设计原理。
后续将会针对信标链的详细设计、分片等ETH2.0内容进行探索。