共识机制之POC(容量证明)

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运算。

图1:第一轮 Shabal256(plotter, nonce)
图2:第二轮 Shabal256(Hash #8191, plotter, nonce)
图3:第三轮 Shabal256(Hash #8190 ,Hash #8191, plotter, nonce)  
图4: 计算Final Hash  Shabal256( Hash #0-Hash #8191)   


图6: 获得最终0-8191的hash


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 早上起床后婆婆说要回老家种菜, 二宝听到了。 自己忙着找衣服找水瓶, 然后挎着奶奶的包朝着爸爸大声吆喝: "爸爸爸...
    阿娟1979阅读 347评论 0 1
  • 燕子觉得她自己无法确定适当的工作地点时,仿佛有征求我意见的意思,而此时我颇强烈地感到我是不能要求别人做什么或做到什...
    冉冉狐生竹阅读 141评论 0 0
  • 最近读完了一本书《陪孩子一起阅读》,是台湾的一位牙医和两个双胞胎女儿一起阅读的故事,书中记录了父女三人,平时阅读、...
    冰锋冰锋阅读 295评论 0 1
  • HTTP分为URI,HEADER,Body三个部分。每个部分都可以包含请求信息,那么每个部分是否都有请求大小限制呢...
    曹波波阅读 16,320评论 1 4