什么是挖矿和Ethash算法?
挖矿这个词来源于加密货币和黄金的类比。或者说黄金和贵金属是稀有的,电子代币也是。增加总量的唯一办法就是挖矿。以太坊也是如此。唯一的方法就是发给我。但与其他例子不同的是,采矿也是一种通过在区块链创建、验证、分发和散布区块来保护网络的方式。
挖以太币=保护网络=验证计算什么是挖矿?以太坊和所有区块链技术一样,使用激励驱动的安全模式。根据共识选择总难度最高的区块。矿工制造积木,其他人测试效果。块仅在包含特定难度的工作量时有效,并且存在其他合格条件。请注意以太坊的Serenity里程碑可能会被替换(参考权益证明模型)。
以太坊区块链在许多方面类似于比特币区块链,但也有些不同。在区块链架构方面,以太坊和比特币的主要区别在于,与比特币不同,以太坊块不仅包含交易列表,还包含最新状态(merkle patricia结构的根哈希码在状态中更准确)。此外,另外两个值,块数和难度也存储在块中。
使用的工作量证明算法被称为et hash(Dagger-Hashimoto算法的改进版本),它包括找到算法的随机数输入,使结果低于特定的难度阈值。工作量证明算法的意义在于,没有比枚举出找到这样一个随机数的可能性更好的策略,而且解的验证是琐碎而廉价的。因为输出是均匀分布的(哈希函数应用的结果),所以我们可以保证,平均来说,找到这样一个随机数所需的时间取决于难度阈值。这使得仅通过操纵难度来控制寻找新块的时间成为可能。
如协议中所述,难度以这样的方式动态调整,即每15秒,整个网络将生成一个块。假设我们的网络用15秒产生一个区块链。这个“心跳”基本上强调的是系统状态的同步,保证不可能维持分叉(允许双花)或者被恶意分子改写,除非攻击者拥有一半以上的网络挖掘能力(所谓的51%攻击)。
任何参与网络的节点都可能是一个挖掘者,期望的挖掘收益与他们的(相对)挖掘能力成正比,比如每秒的随机数个数,这是由网络总分散模型标准化的。
Ethash工作负载被证明是内存不稳定的,这使得它对ASIC有抵抗力。内存难度通过工作量证明算法实现,需要选择依赖随机数和块标题的固定资源子集。这种资源(数十亿字节的数据)称为DAG。每3000块的DAG完全不同。125小时的窗口称为epoch(大约5.2天),需要一点时间来生成。因为DAG只由块高决定,所以可以提前生成。如果没有提前生成,客户端需要等到进程结束时才能生成块。如果客户端没有预先生成和缓存DAG,网络可能会在每个时期转换中经历大规模的块延迟。注意,没有必要生成DAG来验证工作负载证明,它可以用低CPU和小内存来验证。
在特殊情况下,当从头开始创建节点时,挖掘将仅在为现有epoch创建DAG时开始。
挖矿奖励获奖区块的成功工作量证明,矿工将获得:
"获胜"区块的静态区块奖,包含5.0(5个)以太币区块内支出的gas成本 — 一定数量的以太币,取决于当前gas价格叔伯块的额外奖励,形式是每个叔伯块包含额外的1/32在区块中执行并由获胜矿工提交的所有交换所消耗的天然气由每个交易的发送者支付。作为共识协议的一部分,产生的天然气成本归属于矿商的账户。久而久之,这会让数据块奖短。
例如,叔叔块是稳定块,并且是包含先前块(最多6个块)的父块。有效的大叔会得到奖励,以中和网络滞后对挖矿奖励的影响,从而提高安全性(这叫做GHOST协议)。大叔块成功工作量证明矿工形成的块中包含的大叔块获得7/8数据块奖励(=4.375以太坊)。每个块最多允许2个叔叔块。
reddit上的叔伯块ELI5解释叔伯块的分论坛挖掘的成功与否取决于设定的区块难度。块难度动态调整每个块,以指定创建12秒块时间的网络哈希能力。因此,找到块的机会由与难度相关的散列率产生。
Ethash DAGET使用DAG(有向无环图)进行工作负载证明算法,该算法针对每个epoch生成,例如,每3000个块(125小时,约5.2天)。DAG需要很长时间才能生成。如果客户端仅按需生成它,那么在找到新时期的第一个块之前,每个时期转换将不得不等待很长时间。而DAG只取决于块数,所以可以提前计算,避免每个历元等待时间过长。Geth和ethminer执行自动DAG生成,一次维护2个DAG,以使epoch过渡平滑。当从控制台控制采矿时,将打开和关闭自动DAG生成。如果geth是用-—mine选项启动的,默认情况下它也会被打开。请注意,客户端共享DAG资源。如果运行任何客户端的多个实例,请确保仅在一个实例中打开自动DAG生成。
为任何时期生成DAG:
geth makedag lt;block numbergt; lt;outputdirgt;示例geth makedag 360000 ~/.ethash请注意eHash使用~/。~/.ethash (Mac/Linux)或~/~/AppData/Ethash(Windows)for DAG,这样就可以在不同的客户端实现和多个运行实例之间共享。
算法我们的算法Ethash(以前称为Dagger-Hashimoto)基于一个大型、瞬时、随机生成的数据集规则,该规则形成一个Dag (Dag-part),试图解决它的一个特定约束,该约束部分由块头的哈希决定。
它是为了在只有慢速CPU的环境下哈希快速验证时间而设计的,但是在配备了大量高带宽内存的情况下,为挖掘提供了很多加速。大量的内存需求意味着大型矿商获得的超线性收益相对较少。高带宽需求意味着在许多超速处理单元中堆叠和共享相同的存储器所带来的加速对每个单独的单元没有什么好处。
没有节点验证的好处阻碍了集中化,而集中化在挖掘中非常重要。
外部采矿应用程序与以太坊的工作规则和提交的后台程序之间的通信通过JSON-RPC API进行。提供了两个RPC函数;Eth_getWork和eth_submitWork。
这些都正式记录在JSON-RPC API维基百科文章的矿工条目下。
为了挖掘,你需要一个完全同步的以太坊客户端和至少一个以太坊账号。这个账号是用来发挖矿奖励的,通常叫做货币基或者以太基。查看本说明的“创建账户”一章,了解如何创建账户。
警告:在你开始采矿之前,确保区块链和主链完全同步,否则你不能在主链上采矿。
相关文章
- 承认加密资产和智能合约的法律地位,抢占加密交易市场
- 为什么Fcoin的FT不会上涨? 最新公告影响分析(fc fck ft ftk)
- 区块链的市场教育基本完成(区块链技术教育行业应用)
- 构建中国特色、世界一流的法学学科体系 加快设置数字法学、网络法学、人工智能法学、区块链与法律、算法规制与法律、数字经济与法律治理等交叉学科_1
- 国务院批准央行数字货币研发,看央行具体怎么应对Libra?
- 央行数字货币研究所狄刚:八方面破局区块链技术 助力数字金融高质量发展
- 理性看待“区块链”防范非法集资(我国对区块链的态度)
- 未来区块链技术将成为金融机构标配的IT基础架构
- 中国金融协会会长周小川:Libra预示着未来会出现更加全球化的强势货币
- 区块链游戏如何设计?怎么玩-(区块链游戏技术开发)