eth共识算法
『壹』 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算法,不足之处,请批评指正。
『贰』 【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内容进行探索。
『叁』 关于区块链行业的相关术语有哪些
1、实用令牌实用程序令牌是一种实用令牌,可充当使用特定服务的权利。
术语用法示例
实用程序令牌以使用服务为前提。
详细说明
您可以结算商品和餐食的价格,而不是现金,也可以通过拥有云存储来访问它。对于实用程序令牌,不需要审核报告的分类。
公共链是具有高度“公共性”的区块链,任何人都可以自由地参与网络。
术语用法示例
作为调解区块链之间数据交换的基础设施项目,将建立一种在公共区块链上交换数据的机制。
详细说明
在用于记录加密资产(虚拟货币)交易信息的区块链中,这是一种机制,用于由未指定数量的参与者在没有特定管理实体的情况下共识建立交易信息。防止伪造交易信息是非常安全的,但是它需要大量的计算,因此它的缺点是,在有很多参与者的情况下,完成交易需要花费很长时间。
7、可伸缩性问题可伸缩性问题是指延迟事务处理的“可扩展性”问题。
术语用法示例
飙升的汽油价格突出了以太坊的可扩展性问题。
详细说明
由于区块链的性质,由于可在一个块中写入的交易数据量有限,因此处理延迟。汇款可能需要很长时间,这会导致更高的交易费用。比特币是诞生的第一个加密货币,已经被认为是一个特殊的问题,但是解决该问题的努力已得到实施,例如利用闪电网络等其他技术并开发新的区块链。
8、GAS费用GAS费用是以太坊区块链上的(网络)交易费用。
术语用法示例
本周,在以太坊区块链上,尽管有少量汇款,但仍有多起高额天然气账单被支付的案例。
详细说明
用户指定金额的GAS费用是次要奖励。虚拟货币以太坊(ETH)用于付款。由于首先要处理费用较高的交易,因此GAS费用可能会随着交易数量的增加而增加。
9、流动性采矿(流动性采矿)考虑到提供流动性(货币对),流动性挖掘是指除利息外还授予治理令牌,以吸引那些执行收益率制衡的人。
术语用法示例
流动性开采正在加速收益丰厚。
详细说明
在流动性挖掘中,通过将特定资产存储在流动性池中并提供交易者可以买卖的流动性,可以将当时的掉期费作为收入获得。这些流动性挖掘源于最大的去中心化交易所“ Uniswap”,并且诞生了许多流动性挖掘合同,例如Curve Finance和Balancer。
10、DeFi(分布式金融)DeFi(去中心化金融)是指利用区块链并且在没有中央管理员的情况下提供的金融服务或系统。
术语用法示例
自2020年6月以来,DeFi市场发展迅猛。
详细说明
“分散式金融”的缩写。DeFi提供的金融服务包括发行稳定的硬币,借出货币和加密货币交易所。许多平台使用以太坊区块链。
11、PoS(权益证明)PoS是一种共识算法,可让您根据自己拥有的虚拟货币的百分比(权益)批准和生成新区块的权利。
术语用法示例
以太坊联合创始人Vitalik Buterin表示,将ETH的共识算法从PoW迁移到PoS将改善安全性和扩展性。
详细说明
权益证明的缩写。还可以考虑虚拟货币的持有期。它诞生于“工作量证明(PoW)”共识算法的替代方案,该算法需要高性能的计算机来批准交易并消耗大量能量。如果批准,您可以收到新发行的虚拟货币作为奖励。
12、dAppsdApp是使用开源区块链开发的应用。
术语用法示例
韩国最大的三星电子应用商店“ Galaxy Store”已开始使用Tron的区块链处理dApp。
详细说明
“分散的应用程序”的缩写,在日语中称为“分散的应用程序”。一个主要功能是没有集中式管理员。最受欢迎的是以太坊区块链,正在开发诸如游戏和去中心化交易所(DEX)之类的应用程序。
『肆』 浠ュお鍧婂竵鏄濡備綍浜х敓鐨
浠ュお鍧婂竵鏄濡備綍浜х敓鐨勶紵
闅忕潃浜轰滑瀵瑰尯鍧楅摼鎶鏈鍜屽姞瀵嗚揣甯佺殑璁ょ煡搴﹂愭笎鎻愰珮锛屼互澶鍧婂竵鎴愪负鐜板湪鏈鐑闂ㄧ殑鍔犲瘑璐у竵涔嬩竴銆備絾鏄锛岃稿氫汉閮戒笉娓呮氫互澶鍧婂竵鏄濡備綍浜х敓鐨勩傚湪鏈鏂囦腑锛屾垜浠灏嗘帰璁ㄤ互澶鍧婂竵鐨勪骇鐢熻繃绋嬨
浠ュお鍧婃槸涓绉嶅熀浜庡尯鍧楅摼鐨勫紑婧愬钩鍙帮紝鐢ㄤ簬鏋勫缓鏅鸿兘鍚堢害鍜屽幓涓蹇冨寲搴旂敤绋嬪簭锛圖Apps锛夈備互澶鍧婄殑甯佺嶄负浠ュお甯侊紙Ether锛夛紝缂╁啓涓篍TH銆備笌鍏朵粬鍔犲瘑璐у竵涓鏍凤紝ETH鐨勪骇鐢熸槸閫氳繃鐭垮伐鐨勭珵浜夐獙璇佹柊鍖哄潡鐨勮繃绋嬩腑鑾峰緱鐨勩
浠ュお鍧婇噰鐢ㄤ簡ProofofWork锛圥OW锛夊叡璇嗙畻娉曪紝涓庢瘮鐗瑰竵鐩稿悓銆傝繖鎰忓懗鐫锛岀熆宸ラ渶瑕侀氳繃璁$畻澶嶆潅鐨勬暟瀛﹂樻潵楠岃瘉鏂板尯鍧椼傝繖涓杩囩▼琚绉颁负鎸栫熆銆傜熆宸ヤ娇鐢ㄤ粬浠鐨勭數鑴戝勭悊鑳藉姏锛岃繍琛岀畻娉曟潵瑙e喅鏁板﹂棶棰樸備竴鏃﹂棶棰樿В鍐筹紝涓涓鏂扮殑鍖哄潡灏辫娣诲姞鍒板尯鍧楅摼涓娿
鍦ㄤ互澶鍧婄綉缁滀腑锛屾瘡褰撲竴涓鏂扮殑鍖哄潡琚娣诲姞鍒板尯鍧楅摼涓婃椂锛屽氨浼氭湁鏂扮殑ETH浜х敓銆傝繖浜涙柊鐨凟TH鐢辩熆宸ラ氳繃楠岃瘉鏂扮敓鎴愮殑鍖哄潡鑾峰緱銆傛瘡褰撹繖涓杩囩▼鍙戠敓锛屼互澶鍧婄殑鎬讳緵搴旈噺灏变細澧炲姞銆
浠ュお鍧婄殑渚涘簲閲忔湁涓涓涓婇檺锛岃繖涓涓婇檺鏄2.1浜裤傜洰鍓嶏紝澶х害鏈1.15浜縀TH澶勪簬娴侀氱姸鎬併傝繖鎰忓懗鐫锛岃繕鏈夌害1浜縀TH灏嗘潵鍙鑳借鎸栧嚭鏉ャ
铏界劧浠ュお鍧婄洰鍓嶉噰鐢≒OW绠楁硶锛屼絾瀹冭″垝鍦ㄤ笉涔呯殑灏嗘潵杞鍚慞roofofStake锛圥OS锛夊叡璇嗙畻娉曘侾OS绠楁硶涓嶉渶瑕佺熆宸ヨ繘琛岀箒閲嶇殑鏁板﹁$畻锛岃屾槸璁╁弬涓庤呭湪缃戠粶涓婃嫢鏈夌殑浠ュお鍧婃暟鐩浣滀负鎶垫娂锛屾潵楠岃瘉鏂扮殑鍖哄潡銆傝繖涓杩囩▼琚绉颁负閾搁犮侾OS鐨勫ソ澶勬槸鑳芥洿鍔犺妭鑳界幆淇濓紝闄嶄綆鐢佃垂锛屽苟闃叉㈡帀鐢点佹晠闅滅瓑椋庨櫓銆
鎬讳箣锛屼互澶鍧婂竵鏄閫氳繃鐭垮伐鐨勭珵浜夎$畻楠岃瘉鏂板尯鍧楃殑杩囩▼涓浜х敓鐨勩傝繖涓杩囩▼琚绉颁负鎸栫熆锛岃繖涔熸槸鎵鏈夊熀浜嶱OW鍏辫瘑绠楁硶鐨勫尯鍧楅摼浣跨敤鐨勬柟娉曘傜劧鑰岋紝浠ュお鍧婂嵈璁″垝鍦ㄦ湭鏉ヨ浆鍚慞OS鏈哄埗鏉ラ摳閫犳柊閾俱傝繖灏嗘槸涓绉嶆洿涓洪珮鏁堛佸畨鍏ㄣ佺幆淇濈殑鏂瑰紡銆
『伍』 『UniQorn』三分钟看懂以太坊
以太坊,一个引领区块链2.0革命的创新平台,它将「区块链」与「智能合约」概念相结合,解决了比特币在可扩展性上的局限性,成为当下最受欢迎的公有链之一。据不完全统计,超过80%的去中心化应用(DApp)都是基于以太坊开发,它被誉为“区块链2.0”,并受到大众和粉丝的热烈追捧,有望超越比特币。
以太坊的核心概念包括以太币(ETH)、以太坊虚拟机(EVM)和智能合约(Smart Contract)。以太币是该系统中的代币,启动智能合约需支付以太币。Gas机制确保资源分配合理,维护系统的稳定与安全。以太币的单位为“Wei”,最小单位为“1wei”,是ETH的细分数之一。智能合约利用共识算法自动执行合约动作,保障执行信用,应用于Dapp开发、自定义Token发行以及实现其他合约功能。
以太坊虚拟机是运行环境,支持在区块链上执行项目和应用。智能合约是核心组件,具备自动执行合约动作的能力,无需中间机构参与,确保运行的独立性和不可阻挡性。这使得以太坊在区块链领域扮演着类似于传统金融体系中“美元”的角色,成为加密货币间的主流兑付媒介。
以太坊在加密货币信用体系中,如同1944年至1973年间黄金与美元的挂钩,实现了区块链与现实货币信用体系的融合。比特币作为区块链创始,以太坊因其高信用背书,吸引了众多新兴加密货币项目使用以太坊进行募资,进一步巩固了其在加密货币经济中的核心地位。
未来,以太坊面临的主要挑战包括交易速度不足、重大Bug与外部黑客攻击、以及来自其他公链的竞争。为解决这些问题,以太坊正在逐步实现扩容与共识机制的转变,预计在19年实现重要迭代,提升数据吞吐量与安全性,增强稳定性。在不断发展的区块链领域中,以太坊将如何引领行业变革,值得我们持续关注。
『陆』 区块链技术中的共识算法
关于区块链技术的一些讲解和知识点分析我们已经给大家分享过很多次了。今天,霍营java课程就再来了解一下,区块链技术中的共识算法的一些基本定义与特点。
简单过一下区块链
我们一般意识形态中的链是铁链,由铁铸成,一环扣一环。形象地,区块链的也可以这么理解,只不过它不是由铁铸成,而是由拥有一定数据结构的块连接而成,这是一个简单的雏形
通俗讲解共识
所谓共识,通俗来说,就是我们大家对某种事物的理解达成一致的意思。比如说日常的开会讨论问题,又比如判断一个动物是不是猫,我们肉眼看了后觉得像猫,其满足猫的特征,那么我们认为它是猫。共识,是一种规则。
继续我们的会议例子。参与会议的人,通过开会的方式来达到谈论解决问题。
对比区块链中,参与挖矿的矿工通过某种共识方式(算法)来解决让自己的账本跟其他节点的账本保持一致。让账本保持一致的深入一层意思就是,让链中区块信息保持一致。
为什么需要共识,不需要可不可以?当然不可以,生活中没了共识的规则,一切乱套。区块链没了共识的规则,各个节点各干各的,失去一致的意义。
这两个例子的对应的关系如下:
会议的人=挖矿的矿工
开会=共识方式(算法)
谈论解决问题=让自己的账本跟其他节点的账本保持一致
如果你对节点的概念意思不懂,请先理解为矿工,一个节点内部包含很多角色,矿工是其中之一。
共识算法
目前常见的在区块链中,节点们让自己的账本跟其他节点的账本保持一致的共识方式(算法)有如下几种:
PoW,代表者是比特币(BTC)
弊端:
矿池的出现,一定程度上违背了去中心化的初衷,同时也使得51%攻击成为可能,影响其安全性。
存在巨大的算力浪费,看看矿池消耗大量的电力资源,随着难度增加,挖出的不够付电费
PoS,代表者是以太坊(ETH),从PoW过度到PoS
弊端:
破坏者对网络的攻击成本很低,拥有代币就能竞争
另外拥有代币数量大的节点获得记账权的概率会更大,会使得网络共识受少数富裕账户支配,从而失去公正性。
『柒』 以太坊经典是什么
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月
主要特色:独立的加密货币