1、POC簡介: POC(Proof of Capacity)捂寿,通俗來講是容量證明,類似于比特幣的POW共識機(jī)制,但與POW共識機(jī)制不同的是浇借,POC共識機(jī)制采用磁盤空間存儲(相當(dāng)于使用緩存)代替內(nèi)存算力計(jì)算的方式挖礦,事先將算好的Hash值存儲到硬盤中(也稱為P盤)怕品,挖礦開始后妇垢,礦工根據(jù)最新區(qū)塊hash,上一區(qū)塊簽名肉康,Target(類似于比特幣中的網(wǎng)絡(luò)難度)計(jì)算出deadline闯估,然后跟錢包中查詢的deadline比較,若小于錢包中的deadline吼和,則該挖礦挖礦成功(稍后詳細(xì)講解挖礦過程)涨薪。因此你的存儲空間越大,存儲該Hash的可能性越大炫乓。目前采用POC挖礦的主要有Burst刚夺、BHD献丑、Volume等項(xiàng)目。Burst和BHD極為相似,都在POC的基礎(chǔ)上增加了條件侠姑,只有滿足條件才能创橄,稱為CPoC(Conditioned-Proof of Capacity)。
2莽红、POC的Plot文件生成與挖礦過程
? ? ? ?Plotting過程也稱為P盤妥畏,即是將生成的nonce存儲到磁盤文件的過程,相應(yīng)的文件又叫Plot文件安吁,每一個(gè)Plot文件存儲著很多nonce醉蚁,每一個(gè)nonce占據(jù)256KB的存儲空間。下面先闡述一下nonce如何神奇生成的鬼店,以及優(yōu)化過程馍管。欲知nonce的生成,還是先來簡單了解一下Shable256函數(shù)吧薪韩。Shabal 算法也是一種hash算法确沸,相對 SHA256 或者其他 hash 算法,計(jì)算比較慢(存入硬盤花費(fèi)時(shí)間較多俘陷,計(jì)算較慢的話罗捎,不用等待即可存入),輸出為32個(gè)字節(jié)拉盾。也正是這樣桨菜,這個(gè)算法比較適合做 PoC 共識。是時(shí)候切入正題哦捉偏,nonce的生成倒得,如下圖1->圖2->圖3所示。其中Plotter ID是賬戶ID(當(dāng)?shù)V工創(chuàng)建plot文件時(shí)必須提供賬戶ID)夭禽,nonce nr為8字節(jié)的隨機(jī)數(shù)霞掺。一個(gè)nonce包含了8192個(gè)hash,為了加快查找讹躯,將8192個(gè)hash兩兩分組菩彬,每個(gè)分組為一個(gè)scoop,最終得到4096個(gè)分組潮梯,scoop 會被分配一個(gè)從 0 到 4095 的標(biāo)號數(shù)字骗灶。每次scoop的生成都在上個(gè)scoop的基礎(chǔ)上生成的,當(dāng)哈希函數(shù)輸入值(前幾輪的哈希結(jié)果+ID+隨機(jī)數(shù))大于4096字節(jié)后秉馏,之后將只取最新的4096個(gè)字節(jié)來進(jìn)行Shabal運(yùn)算耙旦。