1、POC簡介: POC(Proof of Capacity),通俗來講是容量證明,類似于比特幣的POW共識(shí)機(jī)制,但與POW共識(shí)機(jī)制不同的是,POC共識(shí)機(jī)制采用磁盤空間存儲(chǔ)(相當(dāng)于使用緩存)代替內(nèi)存算力計(jì)算的方式挖礦,事先將算好的Hash值存儲(chǔ)到硬盤中(也稱為P盤),挖礦開始后,礦工根據(jù)最新區(qū)塊hash,上一區(qū)塊簽名,Target(類似于比特幣中的網(wǎng)絡(luò)難度)計(jì)算出deadline,然后跟錢包中查詢的deadline比較,若小于錢包中的deadline,則該挖礦挖礦成功(稍后詳細(xì)講解挖礦過程)。因此你的存儲(chǔ)空間越大,存儲(chǔ)該Hash的可能性越大。目前采用POC挖礦的主要有Burst、BHD、Volume等項(xiàng)目。Burst和BHD極為相似,都在POC的基礎(chǔ)上增加了條件,只有滿足條件才能,稱為CPoC(Conditioned-Proof of Capacity)。
2、POC的Plot文件生成與挖礦過程
? ? ? ?Plotting過程也稱為P盤,即是將生成的nonce存儲(chǔ)到磁盤文件的過程,相應(yīng)的文件又叫Plot文件,每一個(gè)Plot文件存儲(chǔ)著很多nonce,每一個(gè)nonce占據(jù)256KB的存儲(chǔ)空間。下面先闡述一下nonce如何神奇生成的,以及優(yōu)化過程。欲知nonce的生成,還是先來簡單了解一下Shable256函數(shù)吧。Shabal 算法也是一種hash算法,相對(duì) SHA256 或者其他 hash 算法,計(jì)算比較慢(存入硬盤花費(fèi)時(shí)間較多,計(jì)算較慢的話,不用等待即可存入),輸出為32個(gè)字節(jié)。也正是這樣,這個(gè)算法比較適合做 PoC 共識(shí)。是時(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 會(huì)被分配一個(gè)從 0 到 4095 的標(biāo)號(hào)數(shù)字。每次scoop的生成都在上個(gè)scoop的基礎(chǔ)上生成的,當(dāng)哈希函數(shù)輸入值(前幾輪的哈希結(jié)果+ID+隨機(jī)數(shù))大于4096字節(jié)后,之后將只取最新的4096個(gè)字節(jié)來進(jìn)行Shabal運(yùn)算。





