主页 > imtoken授权管理系统 > 以太坊挖矿的原理是什么?

以太坊挖矿的原理是什么?

imtoken授权管理系统 2023-03-12 07:30:38

以太坊的共识机制是PoW(Proof of Work工作量证明机制),使用的算法是Ethash。 该算法是 Dagger-Hashimoto 算法的改进版本。 流程大致如下

1、对于每个区块,先计算一个种子(seed),它只与当前区块的信息相关; 然后根据种子生成一个32M的随机数据集(缓存)

2、基于Cache生成一个1GB的数据采集DAG(有向无环图),是一个完整的搜索空间。 挖矿过程是从DAG中随机选择元素(类似于比特币挖矿中寻找合适的Nonce),然后进行哈希运算cpu挖以太坊,可以快速从Cache中计算出DAG指定位置的元素,然后进行哈希验证

Cache和DAG需要定期更新,每1000个block更新一次,规定DAG的大小随时间线性增长,从1G开始,每年增长7G左右。

r9 290x挖以太坊算力_cpu挖以太坊_以太坊怎么挖

为了更好的理解这部分。我们可以简单的看一下go-ethereum的代码

1、调用miner.go中的New方法生成矿机。

r9 290x挖以太坊算力_以太坊怎么挖_cpu挖以太坊

使用区块链创建时的一些配置,consensus.Engine等参数先生成矿工,然后

cpu挖以太坊_r9 290x挖以太坊算力_以太坊怎么挖

让矿工注册一个cpu计算引擎,一起监控同步状态,通过update更新挖矿状态

更新方法中有一点需要注意:

可以看出,如果当时正在同步区块cpu挖以太坊,则需要暂停挖矿操作,直到同步操作完成(同步成功或失败)。 如果挖矿操作已经执行,则挖矿操作将继续启动。

2.在Register方法中调用worker的Agent接口中的Start方法,在agent.go中完成。 在agent.go中调用mine进行挖矿操作。

r9 290x挖以太坊算力_以太坊怎么挖_cpu挖以太坊

cpu挖以太坊_以太坊怎么挖_r9 290x挖以太坊算力

3、在sealer.go的矿机中进行挖矿,对比结果,判断是否挖矿成功。

通过256/difficulty生成一个目标值,用于后面和计算出的随机数进行比较。 如果计算出的随机数小于目标值,则挖矿成功。 通过当前位置的块号一起,生成一个完整的数据集。

r9 290x挖以太坊算力_以太坊怎么挖_cpu挖以太坊

以太坊怎么挖_cpu挖以太坊_r9 290x挖以太坊算力

具体过程如下:

1)通过数字number获取当时区块的epoch(每30000个区块为一个epoch,时间窗口为125小时,约5.2天),以地址的epoch为索引获取是否有是当时内存中的一个数据集

2)如果不是,首先检查内存中的total dataset是否大于dagsinmemory(默认为1),如果大于则需要删除最早的dataset

3)检查是否有预生成的数据集缓存在一起,数据存在于磁盘空间中。 如果有这个数据,并且和当前区块在同一个epoch,那么就用这个预先生成的数据集作为当前数据集。

以太坊怎么挖_cpu挖以太坊_r9 290x挖以太坊算力

4)如果以上不满足,从头生成数据集。 如果在这个过程中,发现原来的预生成数据集是空的,或者它的epoch和当前区块的epoch不一致,就需要使用新生成的数据集作为预生成数据集,赋值

5)生成数据集后,使用keccak512算法,通过数据集生成一个1GB的数据采集DAG

6)接下来就是使用hashimoto算法(基于Keccak256算法)连续循环计算出一个result值,然后与target进行比较,小于target则成功,否则继续

以太坊挖矿原理以太坊矿机最新价格以太坊挖矿难度与收益以太坊挖矿教程以太坊挖矿收益计算以太坊挖矿以太坊挖矿每日收益以太坊价格行情以太坊官网