LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > 从Plot文件看PoC硬盘挖矿算法的细节

从Plot文件看PoC硬盘挖矿算法的细节

2019-12-16 Kcoin社区 来源:区块链网络


加入Kcoin社区,了解Kcoin详情,请联系【btcwang888】

本文参考文献来源:Burstcoin.org、百度文库、hpool矿池。

前几篇文章,我们大概介绍了PoC挖矿的一些基础知识,如决定硬盘挖矿收益的2个重要公式,以及硬盘挖矿的选择等。本篇文章主要内讲解PoC硬盘挖矿的算法细节。

一、Plot文件

硬盘挖矿中,经常会出现一个Plot的名词,这个Plot就是指矿工存储在硬盘中的数据(文件),Plot由大量的hash值组成,这其中,Plot有包含了几个概念:

1、Shabal256:这是burst挖矿所采用的hash算法,相较于BTC的sha256,shabal256需要更长时间的计算和工作量。Shabal256的好处是挖矿期间矿工无需进行hash计算,因此验证的过程会相对较快,同时shabal256也能防止作弊(即防止矿工在每个出块阶段临时计算需要的Hash值而非存储中的Hash值);

2、Nonce:这是Plot文件的基本单元,它是矿工参与挖矿过程的基础逻辑单元,拥有固定的编号,由256kb大小的数据构成;

3、Scoop:每4096个Scoop文件能够组成一个Nonce文件,Scoop与Nonce一样,都具有编号(Scoop的编号为0~4095)。每个Scoop中包含着2个hash值,即一个Nonce文件包含8192个hash值。

二、Nonce文件

1、Nonce文件由Account id与Nonce id组成(Account id是指Burst或者其他POC币种的用户id或者地址,Nonce id则是nonce编号),经过第一次Hash,生成Hash #8191,即Non中的编号为8191的Hash值。

2、#8190Hash值由之前一个#8191Hash值与Account id,Nonce id 生成。

3、#8189Hash值由之前两个#8191Hash,#8190Hash值与Account id,NonceId 生成,依次类推,每下个Hash值,都有其之前计算的所有Hash值与AccountId,Nonce id 生成。如果过程中超过了4096个bytes,则取最近生成的4096bytes作为下一次的Hash函数输入参数。

4、最终Hash的生成,由Hash#0-8191与Account id,Nonce id共同生成,之后对8192个Hash值都分别对其进行异或操作,作为每个Hash最终的值。


5.得到了8192个Hash值后,Scoop文件的结构如下图所示:

这便是一个完成的Nonce文件生成过程,一个Nonce文件大小为256KB,包含8192个hash值。这就是为何硬盘挖矿的门槛相对较低的原因,只要用户的硬盘空间能够存储一个Nonce文件,就能够参与挖矿。

当前Burst全网容量约为400PB,4PB容量则占据全网算力的1/100,那么4PB大概需要多少个Nonce才能装满呢?

由前文可知,一个Nonce文件大小为256kb,4PB≈4.4万亿KB,那么4.4万亿KB/256kb≈171亿nonce。

一般家用电脑的硬盘容量为500GB,大约能存200万个Nonce文件。因此,小算力只能以吃大锅饭(矿池)的形式参与硬盘挖矿。

三、硬盘挖矿流程

下图是一张硬盘挖矿的出块流程:

在图中我们可以看到出块一共需要9个流程:

1、1-2,GenHash的生成:GenHash类似于BTC中BlockHash的概念,用于形成前后相继的区块链结构。

在Burst网络中,由于Genhash会同时参与公示过程中参数的建立,故将其概念分为两个:GenSig由上一个区块中的GenSig与上个区块的出块者做Hash得出,GenHash由GenSig与快高信息做Hash得出。

通过这样两次Hash计算,即将当前区块前的所有区块形成了不可修改历史区块的链式结构,同时也得出了PoC共识中的重要参数GenHash。

2、3-4,Scoop Number的计算:钱包生成GenHash后,将此值发送给矿工,矿工由此计算本次出块需要的Scoop Number。GenHash Modulo 4096 即是Scoop Number的值。

该Scoop Number用来定义本次出块中,全网的所有矿工应当查询自己拥有的所有Nonce中的Scoop的数据。也即其拥有的某个Scoop中两个Hash的值。

3、5,计算target,deadline:首先,矿工需要遍历磁盘,找到自己拥有的所有nonce中对应于上一步计算出的Scoop Number的两个hash,记为scoopdata,使表达式target=Hash(scoopdata, GenSig)的值最小。

之后利用该最小值targer,计算target/BaseTarget得出deadline。target类似bitcoin中的difficulty_target参数,控制全网挖矿难度,而deadline则决定矿工是否能成功的得到区块的铸造权。

第5步中出现的名词详解:

①、deadline:是一个整数类型数值,一个拥有特定deadline的区块,在全网中需要等待对应于该deadline所指定的时间之后,才可以被作为一个合法的区块。

举个例子,假设deadline数值为60,就代表上一个区块出块后的一分钟,这个块可以允许添加到主网作为合法区块。由此我们可知,计算出的deadline数值越小,得到区块铸造权的概率就越大。

Deadlin的计算过程是矿工遍历自己硬盘空间存储的Nonce值计算得出,即矿工存储的Nonce数量越多,硬盘占用空间越大,计算出更低数值的deadline概率就越大,从而得到区块铸造权的概率就越大。

②、BaseTarget:都知道Burst的出块时间约为4分钟/块,全网的容量是波动的,那么如何在算力波动的情况下来控制出块时间呢?BaseTarget就是挖矿难度,数值越小,挖矿难度越大。

在Burst网络中,最小的target需要除BaseTarget得到deadline。所以动态的调整BaseTarget就能控制出块的时间。

3、6-9,打包交易,铸造区块,广播区块。这个过程是所有区块链系统都存在的。不过值得注意的是,Burst的区块负载大小限制为176KB,即能够成爱19k个左右的交易,则能算出Burst的理论tps值约为80左右。这与BTC等POW区块系统的性能量级相似。

来源:硬盘狗挖矿

—-

编译者/作者:Kcoin社区

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...