*本系列文章糕珊,是鏈博核心區(qū)塊鏈研究小組輸出的高質(zhì)量區(qū)塊鏈研究性文章糠惫,旨在研究和分享底層區(qū)塊鏈技術(shù)的原理解析蚪缀,新技術(shù)趨勢唱歧,拒絕討論任何token亏栈,行情和投資建議溉浙。
上一篇文章中芋忿,我們探討了Stefan Dziembowski[14]從數(shù)學(xué)角度對PoC的形式化模型和證明的討論炸客,Burst則是在工程角度實(shí)際運(yùn)行的PoC完備系統(tǒng)。
兩者在理念上是完全一致的戈钢,但Burst在實(shí)現(xiàn)細(xì)節(jié)上卻與該論文提出的模型和交互不完全相同痹仙。
本篇文章我們會(huì)從Plot文件和出塊流程兩方面討論P(yáng)oC的算法細(xì)節(jié),同時(shí)末尾結(jié)合Stefan Dziembowski的模型討論Burst是否可以納入其框架之下殉了。
PoC硬盤利用與Plot文件
Plot文件即每一個(gè)參與出塊的節(jié)點(diǎn)或是礦工需要在硬盤中存儲(chǔ)的文件开仰,其內(nèi)容由大量特定結(jié)構(gòu)的Hash值組成。Plot文件包含以下的幾個(gè)基本概念:
Shabal256:Shabal256是BurstCoin所使用的Hash算法,相比SHA256等Hash算法众弓,Shabal需要更多的CPU計(jì)算時(shí)間和計(jì)算量恩溅。結(jié)合上一章節(jié)的內(nèi)容我們可以了解,BurstCoin選用Shabal一方面是因?yàn)樵诔鰤K階段礦工并不需要進(jìn)行大量的Hash運(yùn)算谓娃,另一方面也可以通過計(jì)算代價(jià)來防止可能的惡意礦工在每個(gè)出塊階段臨時(shí)計(jì)算需要的Hash值而非存儲(chǔ)中的Hash值脚乡。
Nonce:Nonce是Plot文件中擁有固定編號(hào)的基本單元,由256KB的數(shù)據(jù)構(gòu)成滨达,是礦工用來參與PoC過程的基礎(chǔ)邏輯單元奶稠。
Scoop:每個(gè)Nonce文件由4096個(gè)Scoop文件構(gòu)成,同樣擁有編號(hào)弦悉,其編號(hào)范圍為0-4095窒典。而每個(gè)Scoop文件包含2個(gè)Hash值,也即一個(gè)Nonce文件包含8192個(gè)Hash值稽莉。
Nonce的生成流程如下:1.Nonce文件的種子由Account Id(即BurstCoin網(wǎng)絡(luò)中的用戶地址或者用戶Id) 與 Nonce Id(即nonce編號(hào))組成,經(jīng)過第一次Hash涩搓,生成Hash #8191污秆,即Non中的編號(hào)為8191的Hash值。
2.#8190Hash值由之前一個(gè)#8191Hash值與Account Id昧甘,Nonce Id 生成良拼。
3.#8189Hash值由之前兩個(gè)#8191Hash,#8190Hash值與Account Id充边,Nonce Id 生成庸推,依次類推,每下個(gè)Hash值浇冰,都有其之前計(jì)算的所有Hash值與Account Id贬媒,Nonce Id 生成。如果過程中超過了4096個(gè)bytes肘习,則取最近生成的4096bytes作為下一次的Hash函數(shù)輸入?yún)?shù)际乘。
4.最終Hash的生成,由Hash#0-8191與Account Id漂佩,Nonce Id共同生成脖含,之后對8192個(gè)Hash值都分別對其進(jìn)行異或操作,作為每個(gè)Hash最終的值投蝉。
5.得到了8192個(gè)Hash值后养葵,Scoop文件的結(jié)構(gòu)如下圖所示:
至此,我們生成了1個(gè)完整的Nonce文件瘩缆,一個(gè)Nonce文件包含8192個(gè)Hash值关拒,占用空間256KB。這同時(shí)也是礦工參與挖礦的最低門檻,即只要有大于等于1個(gè)Nonce文件即可參與挖礦夏醉。按照目前BurstCoin全網(wǎng)算力估計(jì)爽锥,3PB大約占全網(wǎng)算力的百分之一,那么需要多少個(gè)Nonce畔柔?經(jīng)過簡單計(jì)算我們得知氯夷,大約需要117億左右個(gè)這樣的Nonce。而一般的家用主機(jī)以500G為例靶擦,僅可以存儲(chǔ)200萬個(gè)Nonce腮考。故在BurstCoin的世界里,低算力基本也都是以參與礦池的形式參與挖礦的過程玄捕。PoC的共識(shí)與出塊上一章節(jié)我們介紹了Plot文件與其基本結(jié)構(gòu)踩蔚,本章節(jié)我們將介紹PoC作為區(qū)塊鏈共識(shí),其完整的挖礦流程是怎樣的枚粘,其同時(shí)探討幾個(gè)共識(shí)中的核心問題馅闽,最后與Stefan Dziembowski的理論相結(jié)合,探討兩套體系的關(guān)聯(lián)和異同馍迄。
上圖是一個(gè)完整的PoC共識(shí)出塊流程福也,下面我們將結(jié)合圖示分別介紹其每一個(gè)步驟。
步驟1-2攀圈,GenHash的生成:GenHash類似于BitCoin中BlockHash的概念暴凑,用于形成前后相繼的區(qū)塊鏈結(jié)構(gòu)。BurstCoin中赘来,由于該Hash同時(shí)參與共識(shí)過程中參數(shù)的建立现喳,其將概念拆分為兩個(gè):GenSig由上一個(gè)區(qū)塊中的GenSig與上個(gè)區(qū)塊的出塊者做Hash得出,GenHash由GenSig與快高信息做Hash得出犬辰。通過這樣兩次Hash計(jì)算嗦篱,即將當(dāng)前區(qū)塊前的所有區(qū)塊形成了不可修改歷史區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu),同時(shí)也得出了PoC共識(shí)中的重要參數(shù)GenHash忧风。
步驟3-4. Scoop Number的計(jì)算:錢包生成GenHash后默色,將此值發(fā)送給礦工,礦工由此計(jì)算本次出塊需要的Scoop Number狮腿。GenHash Modulo 4096 即是Scoop Number的值腿宰。該Scoop Number用來定義本次出塊中,全網(wǎng)的所有礦工應(yīng)當(dāng)查詢自己擁有的所有Nonce中的Scoop的數(shù)據(jù)缘厢。結(jié)合上一章節(jié)內(nèi)容我們可以得知吃度,也即其擁有的某個(gè)Scoop中兩個(gè)Hash的值。
步驟5贴硫,計(jì)算target伊者,deadline:首先,礦工需要遍歷磁盤间护,找到自己擁有的所有nonce中對應(yīng)于上一步計(jì)算出的Scoop Number的兩個(gè)hash亦渗,記為scoopdata,使表達(dá)式 target=Hash(scoopdata, GenSig)的值最小汁尺。之后利用該最小值 targer法精,計(jì)算target/BaseTarget得出deadline。target類似bitcoin中的difficulty_target參數(shù)痴突,控制全網(wǎng)挖礦難度搂蜓,而dealine決定了了該礦工產(chǎn)生的區(qū)塊在全網(wǎng)中是否成功得到該區(qū)塊鑄造權(quán)。上述每個(gè)參數(shù):
deadline:是一個(gè)整數(shù)類型數(shù)值辽装,一個(gè)擁有特定deadline的區(qū)塊帮碰,在全網(wǎng)中需要等待對應(yīng)于該deadline所指定的時(shí)間之后,才可以被作為一個(gè)合法的區(qū)塊拾积。舉例來說殉挽,如果deadline為60,則代表在上一個(gè)塊出塊時(shí)間一分鐘后拓巧,這個(gè)塊可以被允許添加到主網(wǎng)作為合法區(qū)塊此再。由此我們可以得知,計(jì)算得出deadline越小的礦工玲销,越有勝算得到當(dāng)前塊的鑄造權(quán)。而deadline的計(jì)算過程是礦工通過遍歷自己所有隨機(jī)生成的Nonce中的值計(jì)算得出摘符,也即代表所擁有Nonce個(gè)數(shù)越多贤斜,磁盤占用空間越大,獲取數(shù)值更低的deadline的概率更大逛裤,從而得到鑄塊權(quán)的概率也更大瘩绒。
BaseTarget:BurstCoin設(shè)定的全網(wǎng)平均出塊時(shí)間為4分鐘,全網(wǎng)的存儲(chǔ)算力是波動(dòng)带族,如何在波動(dòng)的算力下控制全網(wǎng)平均出塊時(shí)間锁荔?類似與BitCoin,BaseTarget代表挖礦難度蝙砌,其值越小阳堕,說明全網(wǎng)挖礦難度越高。在burstcoin中择克,最小的target需要除BaseTarget得到最后deadline恬总。所以對BaseTarget的動(dòng)態(tài)調(diào)整,可以直接控制全網(wǎng)的區(qū)塊間的間隔肚邢,也即區(qū)塊時(shí)間壹堰。
步驟6-9拭卿,打包交易,鑄造區(qū)塊贱纠,廣播區(qū)塊峻厚。此過程與所有區(qū)塊鏈系統(tǒng)類似。值得一提的是谆焊,BurstCoin的區(qū)塊負(fù)載大小限制為176KB惠桃,平均可以承載19k個(gè)左右的交易,不難得出其理論tps上限控制在80左右懊渡,與Bitcoin和Eth等PoW類型的區(qū)塊鏈系統(tǒng)相比刽射,其性能量級也是相類似的。
綜上所述剃执,本次我們以BurstCoin為例誓禁,詳細(xì)介紹工程中的PoC共識(shí)算法的實(shí)現(xiàn),主要集中在Plot文件內(nèi)容的生成肾档,與出塊的詳細(xì)交互和計(jì)算流程摹恰。
在下一篇文章中,我們提取幾個(gè)PoC共識(shí)過程的核心問題怒见,幫助讀者更好地理解PoC算法俗慈,同時(shí)結(jié)合Stefan Dziembowski的模型討論Burst是否可以納入其框架之下和一些思考的分享,敬請期待遣耍。鏈博科技區(qū)塊鏈系列文章闺阱,致力于分享區(qū)塊鏈領(lǐng)域的底層技術(shù)知識(shí),努力提供原創(chuàng)舵变,有深度的技術(shù)內(nèi)容酣溃。
從技術(shù)角度探索區(qū)塊鏈創(chuàng)新的同時(shí),鏈博科技也從產(chǎn)業(yè)結(jié)合角度深入思考纪隙,推進(jìn)區(qū)塊鏈落地項(xiàng)目的建設(shè)赊豌,為企業(yè)提供專業(yè)、易用绵咱、全棧的區(qū)塊鏈鏈改服務(wù)碘饼。
歡迎關(guān)注我們的往期文章,也歡迎在文章評論區(qū)留下你們的觀點(diǎn)和想法悲伶。
參考源
- [1.]Spacemint:A Cryptocurrency Based on Proofs of Space
- [2.]BHD whitepaper
- [3.]BurstCoin Introduction Serious
- [4.]Proof of Space
- [5.]Burstcoinist
- [6.]Proof of Space from Stacked Expanders
- [7.]The Burst Dymaxion
- [8.]burstforum
- [9.]mining tutorials
- [10.] Cynthia DworkMoni Naor,Pricing via Processing or Combatting Junk Mail
- [11.] Giuseppe Ateniese, Randal C. Burns, Reza Curtmola, Joseph Herring, Lea Kissner, Zachary N. J. Peterson, and Dawn Song. Provable data possession at untrusted stores. In Peng Ning, Sabrina De Capitani di Vimercati, and Paul F. Syverson, editors, ACM CCS 07, pages 598–609. ACM Press, October 2007
- [12.] Kevin D. Bowers, Ari Juels, and Alina Oprea. Proofs of retrievability: theory and implementation. In CCSW, pages 43–54, 2009
- [13.] Nikolaos P. Karvelas and Aggelos Kiayias. Efficient proofs of secure erasure. In Security and Cryptography for Networks - 9th International Conference, SCN 2014, Amalfi, Italy, September 3-5, 2014. Proceedings, pages 520–537, 2014]
- [14.] Dziembowski, S., Faust, S., Kolmogorov, V., & Pietrzak, K. (2015). Proofs of space. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 9216(616160), 585–605.
- [15]Bitcoin White Paper