深入?yún)^(qū)塊鏈共識(shí)(三): PoC原理解析

*本系列文章糕珊,是鏈博核心區(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文件

image

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值。

image

2.#8190Hash值由之前一個(gè)#8191Hash值與Account Id昧甘,Nonce Id 生成良拼。

image

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ù)际乘。

image

4.最終Hash的生成,由Hash#0-8191與Account Id漂佩,Nonce Id共同生成脖含,之后對8192個(gè)Hash值都分別對其進(jìn)行異或操作,作為每個(gè)Hash最終的值投蝉。

image
image

5.得到了8192個(gè)Hash值后养葵,Scoop文件的結(jié)構(gòu)如下圖所示:

image

至此,我們生成了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)和異同馍迄。

image

上圖是一個(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是否可以納入其框架之下和一些思考的分享,敬請期待遣耍。
image.gif

鏈博科技區(qū)塊鏈系列文章闺阱,致力于分享區(qū)塊鏈領(lǐng)域的底層技術(shù)知識(shí),努力提供原創(chuàng)舵变,有深度的技術(shù)內(nèi)容酣溃。


鏈博.jpeg

從技術(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艾恼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拢切,更是在濱河造成了極大的恐慌蒂萎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淮椰,死亡現(xiàn)場離奇詭異五慈,居然都是意外死亡纳寂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門泻拦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毙芜,“玉大人,你說我怎么就攤上這事争拐∫钢啵” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵架曹,是天一觀的道長隘冲。 經(jīng)常有香客問我,道長绑雄,這世上最難降的妖魔是什么展辞? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮万牺,結(jié)果婚禮上罗珍,老公的妹妹穿的比我還像新娘。我一直安慰自己脚粟,他們只是感情好覆旱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著核无,像睡著了一般扣唱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上团南,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天画舌,我揣著相機(jī)與錄音,去河邊找鬼已慢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛霹购,可吹牛的內(nèi)容都是我干的佑惠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼齐疙,長吁一口氣:“原來是場噩夢啊……” “哼膜楷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贞奋,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赌厅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后轿塔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體特愿,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仲墨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揍障。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片目养。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖毒嫡,靈堂內(nèi)的尸體忽然破棺而出癌蚁,到底是詐尸還是另有隱情,我是刑警寧澤兜畸,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布努释,位于F島的核電站,受9級特大地震影響咬摇,放射性物質(zhì)發(fā)生泄漏伐蒂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一菲嘴、第九天 我趴在偏房一處隱蔽的房頂上張望饿自。 院中可真熱鬧,春花似錦龄坪、人聲如沸昭雌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烛卧。三九已至,卻和暖如春妓局,著一層夾襖步出監(jiān)牢的瞬間总放,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工好爬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留局雄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓存炮,卻偏偏與公主長得像炬搭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子穆桂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容