草根站长
老司机 路子野 随时超车
我们都知道最近几年加密货币发展的比较好,很多人非常的关注加密货币,其中比特币是最成功的虚拟货币,最近很多人都在讨论挖矿算力市场,下面小编带你了解一下什么是挖矿和Ethash算法?希望小编的内容对你有所帮助。
挖矿这个词源于对加密货币与黄金的类比。黄金或贵金属很稀有,电子代币也是,增加总量的唯一方法就是挖矿。以太坊也是这样,发行的唯一办法就是挖矿。但是不像其他例子,挖矿也是通过在区块链中创建、验证、发行和传播区块来保护网络的方法。
什么是挖矿?以太坊,和所有区块链技术一样,使用激励驱动的安全模式。共识基于选择具有最高总难度的区块。矿工创造区块,其他人检测有效性。区块只有在包含特定难度的工作量时才有效,还有其他合格性条件。请注意到以太坊Serenity里程碑,可能就会被取代(参考权益证明模型)。
以太坊区块链在很多方面与比特币区块链类似,但也有些不同。在区块链架构方面,以太坊和比特币之间最主要的的区别是,不像比特币,以太坊区块不仅包含交易列表也包含最近状态(merkle patricia特里结构的根散表编码在状态中更精确)除此之外,另外两个值,区块数和难度,也储存在区块中。
使用的工作量证明算法叫Ethash(Dagger-Hashimoto算法的改良版本),包括找到算法的随机数输入以使结果低于特定的难度阈值。工作量证明算法的意义在于,要找到这样一个随机数,没有比列举可能性更好的策略,而解决方法的验证琐碎又廉价。由于输出有均匀分布(是散表功能应用的结果),我们可以保证,平均而言,需要找到这样一个随机数的时间取决于难度阈值。这使得只通过操纵难度来控制找到新区块的时间成为可能。
正如协议中所描述的,难度动态调整的方式是每15秒整个网络会产生一个区块。我们说网络用15秒区块时间生产一个区块链。这个"心跳"基本上主要强调系统状态同步,保证不可能维持一个分叉(允许double spend)或被恶意分子重写历史,除非攻击者有半数以上的网络挖矿能力(即所谓的51%攻击)。
任何参与到网络的节点都可能是矿工,预期的挖矿收益和他们的(相对)挖矿能力或者说成正比,比如被网络总散表率标准化的,每秒尝试的随机数数量。
Ethash工作量证明是内存难解的,这使它能抵抗ASIC。内存难解性由工作量证明算法实现,需要选择依靠随机数和区块标题的固定资源的子集合。这个资源(几十亿字节大小的数据)叫做DAG。每3000个区块的DAG完全不同,125小时的窗口叫做epoch(大约5.2天),需要一点时间来生成。由于DAG只由区块高度决定,它可以被事先生成,如果没有被事先生成,客户端需要等到进程最后来生产区块。如果客户端没有预生成并提前缓存DAG,网络可能会在每个epoch过渡经历大规模区块延迟。注意不必要生成DAG以验证工作量证明,它可以在低CPU和小内存的状态下被验证,在特殊情况下,从零开始创建节点的时候,只有在为现存epoch创建DAG的时候才会开始挖矿。
获奖区块的成功工作量证明矿工会获得:
· "获胜"区块的静态区块奖,包含5.0(5个)以太币
· 区块内支出的gas成本 — 一定数量的以太币,取决于当前gas价格
· 叔伯块的额外奖励,形式是每个叔伯块包含额外的1/32
在区块中执行所有交易所消费的、由获胜矿工提交的gas都由每个交易的发送者支付。已发生的gas成本归到矿工账户作为共识协议的一部分。随着时间变化,这会使数据区块奖变得矮小。挖矿的成功取决于设定的区块难度。区块难度动态调整每个区块,以规定网络散列能力来创造12秒区块时间。找到区块的机会因此由与难度相关的散列率产生。
Ethash将DAG(有向非循环图)用于工作量证明算法,这是为每个epoch生成,例如,每3000个区块(125个小时,大约5.2天)。DAG要花很长时间生成。如果客户端只是按需要生成它,那么在找到新epoch第一个区块之前,每个epoch过渡都要等待很长时间。然而,DAG只取决于区块数量,所以可以预先计算来避免在每个epoch过渡过长的等待时间。Geth和ethminer执行自动的DAG生成,每次维持2个DAG以便epoch过渡流畅。挖矿从控制台操控的时候,自动DAG生成会被打开和关闭。如果geth用—mine选项启动的时候,也会默认打开。注意客户端分享DAG资源,如果你运行任何客户端的多个实例,确保自动的DAG生成只在一个实例中打开。
为任意epoch生成DAG:实例geth makedag 360000 ~/.ethash.。请注意ethash为DAG使用~/.ethash (Mac/Linux) 或~/AppData/Ethash (Windows),这样它可以在不同的客户端实现以及多个运行实例中分享。我们的算法,Ethash(之前被称为Dagger-Hashimoto),是基于一个大的、瞬时的、任意生成的、形成DAG(Dagger-part)的资料组规定,尝试解决它一个特定的约束,部分通过区块标题散列来决定。
它被设计用于在一个只有慢CPU的环境中来散列快速验证时间,但在被提供大量高带宽内存时,为挖矿提供大量的加速。大量内存需求意味着大规模矿工获得相对少的超线性利益。高带宽需求意味着从堆在很多超速处理单元、分享同样内存的加速在每个单独的单元给出很少的利益(译者注:通过阻止专用芯片共享内存的方式,降低矿机的作用)。
没有节点验证的利益因而阻碍中心化,这在挖矿中很重要。外部挖矿应用和以太坊工作规定和报送的后台程序之间的交流通过JSON-RPC API发生。提供两个RPC功能;eth_getWork和eth_submitWork。这些被正式记录在JSON-RPC API维基百科文章的矿工条目下。为了挖矿你需要一个完全同步的、能够挖矿的以太坊客户端和至少一个以太坊账户。这个账户用于发送挖矿奖励,通常被称为货币基或以太基。查看这个说明的"创建帐户"章节,学习如何创建帐户。
警告:开始挖矿前,确保区块链和主链完全同步,否则就不能在主链上挖矿。以上便是小编为你整理的挖矿和Ethash算法的具体信息,相信你应该也都有所了解了,希望小编的内容对你有所帮助。
新出来的挖矿木马,用你的显卡挖矿呢。我前几天也中招了,去论坛反馈,工作人员给我的方法可以先铅橘手动操作,方法如下:1、将原Ethash文件夹删辩肆掉,并建立一个相同名称的文件夹,然后设置该文件夹的属性为【只读】2、全盘搜索一下Deploy64以及RBCEntry.dll文件,然后用毒霸的文件粉碎把他们粉碎槐灶团掉
待字闺中开发了一门区块链方面的课程:《深入浅出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算法,不足之处,请批评指正。
简单来说,挖矿就是利用芯片进行一个与随机数相关的计算,得出答案后以此换取一个虚拟币。虚拟币则可以通过某种途经换取各个国家的货币。运算能力越强的芯片就能越快找到这个随机答案,理论上单余坦位时间内能产出越多的虚拟币。由于关系到随机数,只有恰巧找到答案才能获取奖励。有可能一块芯片下一秒就找到答案,也有可能十块芯片一个星期都没找到答案。越多芯片同时计算就越容易找到答案,内置多芯片的矿机就出现了。而多台矿机组成一个“矿场”同时挖矿更是提高效率。而矿竖皮桐池则是由多个“个体户”加入一个组织一起挖矿,无论谁找到答案挖出虚拟币,所有人同时按贡献的计算能力获得相应的报酬,这种方式能使“个体户”收入更稳定。举一个通俗的例子:我在一张纸上随便写一串数字,给出部分提示,谁猜对就给他奖金(挖矿)聪明的人根据提示能作出更多猜测(计算能力)有人出钱请许多人回来一起猜测(矿场)有人召集大家一起猜测,无论谁猜到,按照每个人猜测次数比例分配奖金(矿池)上面举的例子大家可以看到,越聪明的人能作出越多次猜测,猜到的机会就越大,相应地能获得越多的收益。我们以比特币为例比特币网络上进行着大量的交易这些交易需要被记录到账本中才有效每10分钟左右会生成一个账单为了鼓励大家都来帮忙记账现在规定第一个记下账的“会计”可以获得12.5个比特币的奖励但是这个账本有一个很复杂的密码只有第一个破解出密码的人才能记账获取奖励但因为这个密码太过复杂且没有规律,只能靠猜于是大家就拼命尝试密码比特币挖矿就是依靠区块链技术获取比特币。区块链就相当于一个账本,每一个区块就是一页账单,将所有的区块连在一起就是区块链,任何的交易信息转账记录都被记录在区块链里面。比特币挖矿就类似一个寻宝游戏,每隔一段时间,比特币系统就在系统节点上生成一个随机代码,互联网中所有的计算机都可以寻找这个代码,谁只要一找到就会生成一个区块,随即得到一个比特币,这个产生比特币的过程就是“比特币挖矿”。一般挖矿的种类分为两种,一种是普通挖矿,另一种是云挖矿。普通挖矿就是自己购买设备自行安放进行挖矿,但是这种挖矿牵扯到供电费、主板、显卡、配件、噪音、散热、占地等多方面,比较麻烦,因此不推荐。和我们比较贴近,也比较适用于我们的就是“云挖矿”。云挖矿就是你在平台付款购买云算力然后坐享其成就可以了,其余的一切事宜皆由平台处理,简便安全。我们经常看到有矿工为了挖矿,不断升级计算机配置,或者买多台计算机,其实质目的就是为了提高自己的算力。挖矿的过程是每一个矿工,在一个时间段里,和所有的矿工竞争计算那一份比特币,实质就是一个人的算力PK全球的握哪算力,由此可见,挖矿没那么容易。什么是算力?在“挖矿”的过程中,我们需要找到其相应的解,而要找到其解,并没有固定算法,只能靠计算机随机的哈希碰撞。一台矿机每秒钟能做多少次哈希碰撞,就是其“算力”的代表,单位写成hash/s。
版权声明:本文标题:什么是挖矿和Ethash算法?挖矿和Ethash算法介绍内容由互联网整理发布,该文观点仅代表作者本人,转载请联系作者并注明出处:http://www.0792jiaju.com/post/2124.html,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。
发表评论