1、POC简介: POC(Proof of Capacity),通俗来讲是容量证明,类似于比特币的POW共识机制,但与POW共识机制不同的是,POC共识机制采用磁盘空间存储(相当于使用缓存)代替内存算力计算的方式挖矿,事先将算好的Hash值存储到硬盘中(也称为P盘),挖矿开始后,矿工根据最新区块hash,上一区块签名,Target(类似于比特币中的网络难度)计算出deadline,然后跟钱包中查询的deadline比较,若小于钱包中的deadline,则该挖矿挖矿成功(稍后详细讲解挖矿过程)。因此你的存储空间越大,存储该Hash的可能性越大。目前采用POC挖矿的主要有Burst、BHD、Volume等项目。Burst和BHD极为相似,都在POC的基础上增加了条件,只有满足条件才能,称为CPoC(Conditioned-Proof of Capacity)。
2、POC的Plot文件生成与挖矿过程
Plotting过程也称为P盘,即是将生成的nonce存储到磁盘文件的过程,相应的文件又叫Plot文件,每一个Plot文件存储着很多nonce,每一个nonce占据256KB的存储空间。下面先阐述一下nonce如何神奇生成的,以及优化过程。欲知nonce的生成,还是先来简单了解一下Shable256函数吧。Shabal 算法也是一种hash算法,相对 SHA256 或者其他 hash 算法,计算比较慢(存入硬盘花费时间较多,计算较慢的话,不用等待即可存入),输出为32个字节。也正是这样,这个算法比较适合做 PoC 共识。是时候切入正题哦,nonce的生成,如下图1->图2->图3所示。其中Plotter ID是账户ID(当矿工创建plot文件时必须提供账户ID),nonce nr为8字节的随机数。一个nonce包含了8192个hash,为了加快查找,将8192个hash两两分组,每个分组为一个scoop,最终得到4096个分组,scoop 会被分配一个从 0 到 4095 的标号数字。每次scoop的生成都在上个scoop的基础上生成的,当哈希函数输入值(前几轮的哈希结果+ID+随机数)大于4096字节后,之后将只取最新的4096个字节来进行Shabal运算。