你真的瞭解POC容量證明嗎?

買賣虛擬貨幣

假設一下,當某一天BTC全網算力已經上漲到目前的100倍時,會發生什麼?會讓更多的人參與其中,會讓更多的人受益?不,會造成巨大的電力消耗,BTC挖礦一年所耗費的電力是整個歐洲國家的總和。儘管到那時幣價可能已經是現在的100倍,但BTC巨大的耗電量始終是整個生態內頻繁提及的問題。

而終於有一天,全世界各國下令禁止高能耗的挖礦活動,所有POW礦場都被迫關停,BTC全網算力暴跌,BTC網路隨之癱瘓。在全球的禁令下,只有那些耗電量極低的加密貨幣才能得以生存。

加密貨幣的信仰者們迫切尋求著一種更低能耗的共識演算法以挽救BTC。至此,POC(proof of capacity,容量證明)登上了加密世界的王座。

當然,這都是個人的臆想,如有雷同,純屬巧合。

迴歸正題,雖然上文的臆想可能過於遙遠,但BTC以及POW所帶來的巨大電力消耗問題是確實存在的。BTC社羣的成員們就此提出了各種的解決方案,最終出現了空間證明(Proof of space),空間證明最終由burst團隊將其改進並轉變為如今的POC容量證明,因此Burst也稱之為POC幣種的鼻祖。

本質上,POC容量證明也是工作量證明的一種,只不過POC更加特殊,它與BTC的POW要求礦工追求雜湊算力不同,POC容量證明要求礦工追求硬碟容量,這讓POC容量證明擺脫了ASIC化與巨大耗電量的命運。

相較於BTC礦機動輒幾千瓦的功耗,硬碟的功耗簡直不要太低,目前市面上的硬碟功耗普遍在5-10W,因此POC容量證明的省電是顯而易見的。

除此之外,使用硬碟挖礦的POC容量證明無需擔心ASIC化,因為在POC容量證明中,硬碟容量的提升只能增加硬碟數量。而定製超大的硬碟,增加的只是成本,即便你有20T的硬碟,大不了我上兩塊10T。

目前的加密貨幣中,使用POC容量證明的幣種僅有少數,而POC幣種無一例外都需要將資料填滿硬碟空間,我們稱之為P盤,資料會強制佔滿硬碟空間,所儲存的資料只能用於硬碟挖礦,這一步讓許多不夠了解硬碟挖礦的朋友匪夷所思,為什麼要強制佔滿硬碟空間,POC容量證明到底是什麼樣的機制?

1、POC容量證明的演算法原理

傳統的POW工作量證明,為了保證競爭的公平性,在一次競爭區塊打包權時,都要求礦工透過計算得到解答區塊所需的雜湊值,無論之前作出過多少次的計算結果,都要直接拋棄並重新計算。

而POC容量證明,也需要計算,雖然過程同樣緩慢,但這個過程是在挖礦開始之前,礦工所需要做的僅僅是利用計算硬體例如CPU、GPU計算出挖礦所需的雜湊值,並將雜湊值存入硬碟空間即可。這就是我們常說的POC空間換時間,利用硬碟來快取雜湊值,提高了計算的效率。

可能還是有朋友會產生疑問,為什麼POC能透過儲存雜湊值來提高計算效率呢?請看下面

2*3*4=24

2*3*4+10=34

2*3*4+111=135 ……

這3個計算中,如果是常規的計算邏輯,那麼需要執行6次的乘法以及2次加法。不過我們可以發現,只需要將2*3*4的結果儲存,我們就可以只透過2次的加法便能計算出所有的結果。

當然,這樣的代價就是我們要有一定容量的硬碟去儲存這些計算的結果,這就是為什麼能透過儲存來提高計算效率的原因。POC就是透過此種方法降低計算的難度,並因此將POW的算力消耗變成了硬碟空間的消耗。

容量證明便是採用此項方法,礦工透過儲存快取資料即可降低計算難度,以此將工作量證明的目標由算力消耗轉向儲存消耗。

2、POC容量證明的核心

Shabal雜湊函式是2007年NIST舉辦的加密函式競賽中的候選方案,儘管該方案沒能進入決賽,但仍不失為一個優秀的雜湊演算法,該演算法目前也沒有出現致命弱點。容量證明的Plot檔案需要透過Shabal函式來生成,生成方式如下:

第一輪運算:

礦工賬戶ID+隨機數Shabal256(256位Shabal函式)=Hash值8191號

上述過程產生的8191號雜湊值總共有32位元組,礦工ID和隨機值各8位元組。

第二輪運算:

Hash#8191+賬號ID+隨機數Shabal256=Hash#8190

第三輪運算:

Hash#8910+Hash#8191+ID+隨機數Shabal256=Hash#8189

重複上述運算,當雜湊函式輸入值(前幾輪的雜湊結果+ID+隨機數)大於4096位元組後,之後的運算將只會取最新的4096位元組資料來進行雜湊,例如:

Hash#7001+...+Hash#7128+ID+隨機數Shabal256=Hash#7000

每一個雜湊值由32位元組,128個雜湊值一共4096位元組

最後,當完成8192次迴圈後,我們會有從0號到8191號總共8192個雜湊值,將所有的雜湊值作為輸入,再加上ID與隨機數,算出最終Hash值,如下:

Hash#0+...+Hash#8191+ID+隨機數Shabal256=Final Hash

最終Hash拿來與其他8192個雜湊值進行異或運算,得到全新的8192個雜湊值,儲存這些雜湊值,兩兩分組分為4096組Scoop,Scoop便是容量證明挖礦所需要用到的基礎快取資料。每一組Scoop包含64位元組,4096組Scoop總共佔用256KB的儲存空間。

由於礦工的ID是由公鑰生成,不因此會輕易改動,因此Hash值生成的不同由隨機數來決定,每個隨機數都將生成256KB的Scoop組,而一個隨機數佔8位元組,1byte(位元組)=8bit,所以8位元組總共有18,446,744,073,709,551,615種可能,想要儲存完所有隨機數所對應的Scoop組,總共需要4096ZB的空間,而目前人類所有資料加起來不超過50ZB,儲存所有的資料資料是不可能的,因此礦工只能儲存一部分的Scoop資料。

至於礦工為何要儲存Scoop組,原因是礦工的挖礦將會用到這些Scoop組,其快取的資料將成為計算快取來加快挖礦計算速度。

應用:利用Scoop組的資訊挖礦

在挖礦之前,礦工需要根據相關資訊計算初需要讀取的scoop組,我們以BHD為例(BHD的容量證明與Burst類似),其生成挖礦所需scoop組的方式如下:

錢包生成挖礦資訊,包含最新區塊的產塊簽名,下一區塊高度以及base target。base target涉及到BHD的”Deadline“設定,其設定相當於BTC網路中的“當前網路難度”。

錢包生成挖礦所需Scoop組流程如下:

最新區塊的產塊簽名0+礦工IDShabal256=產塊簽名1

產塊簽名1+下一區塊高度Shabal256=產塊雜湊

產塊雜湊mod 4096=Scoop組編號(對產塊雜湊以4096取模,即取最小余數)

假設產塊雜湊取模後得到值 199,礦工就需要遍歷198#Scoop組(Scoop組含0~4095)的資料,將相應組所有內容取一次Shabal256雜湊值,再結合之前的產塊簽名還有Target資料(一種由錢包生成的當前網路挖礦難度資料),共同換算出Deadline資料,換算方式如下:

Scoop組資料+產塊簽名Shabal256=難度Target

難度Target/當前網路難度Base Target=Deadline(產塊目標時間)

由於BHD網路中,Deadline被設定為>1的值(實際網路中設定值比1大得多),所以礦工為了讓Deadline符合難度目標,必須要從硬碟中反覆讀取儲存的Scoop資料進行運算。

每一個Scoop組的資訊包含對0~4095隨機數取值的所有資訊,因此礦工為了能算出符合要求的Deadline就必須要儘可能多的儲存Scoop組資訊,即提升挖礦效率只能透過增加硬碟,提高儲存空間來實現。就如同BTC工作量證明中,提升挖礦效率只能透過增加礦機或提高礦機效率來實現。

3、殊途同歸的“工作量證明”

透過前文我們可以瞭解到,POC容量證明依然屬於“工作量證明”,究其本質而言,POC容量證明也是透過對資源的消耗來維護網路的安全。BTC的工作量證明是消耗計算資源+高消耗電力資源+挖礦裝置為BTC賦予基本價值,而POC幣種透過消耗硬碟資源+低消耗電力資源+挖礦裝置為自身賦予基本價值。

當電力消耗達到某一個程度時,電力就會成為網路穩定性的影響因素,除影響網路算力的穩定性外,還會對去中心化程度造成影響。

當電費和挖礦裝置價格成為影響礦工的准入門檻之後,普通人就會無法承擔起維護網路安全的一份子,即我們常說的挖BTC是富人的遊戲,當越來越少的富人接手“挖礦遊戲”後,去中心化的程度就會越來越低。

BTC網路的現狀便是如此。但在POC生態中,由於硬碟天生自帶低功耗的屬性,因此在較長的一段時間內,POC硬碟挖礦的電力成本將不再是提高准入門檻的因素之一。

硬碟的廣泛適配性,更是進一步降低了挖礦的准入門檻,一塊普通的二手機械硬碟即可成為挖礦裝置,參與挖礦。值得一提的是,POC儲存的資料是離線狀態下生成的資料,因此即便是硬碟損壞,也不會導致網路資料的丟失。

POC容量證明的設計初衷便是為了解決傳統POW的電力資源消耗等問題,由於POC的本質仍舊是透過消耗物理資源來為貨幣賦值,因此從長遠的角度看,POC也存在著中心化的趨勢。

但在BTC日趨中心化的今天,如何讓更多的人參與區塊鏈,參與挖礦行業,分享新技術為人類帶來的紅利,POC容量證明是 一種十分友好的解決方案。

#硬碟挖礦#  #硬碟狗社羣#

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;