區(qū)塊鏈共識技術(shù)一:pow共識機制

?一.前言

????????????在了解pow共識機制前久信,我們先了解下比特幣區(qū)塊的結(jié)構(gòu),下圖是比特幣區(qū)塊的結(jié)構(gòu)圖:

比特幣區(qū)塊結(jié)構(gòu)圖

????????從圖上可知漓摩,比特幣的結(jié)構(gòu)分為區(qū)塊頭和區(qū)塊體裙士,其中區(qū)塊頭細分為:

????????父區(qū)塊頭哈希值:前一區(qū)塊的哈希值,使用SHA256(SHA256(父區(qū)塊頭))計算管毙。占32字節(jié)

????????版本:區(qū)塊版本號腿椎,表示本區(qū)塊遵守的驗證規(guī)則 。占4字節(jié)

????????時間戳:該區(qū)塊產(chǎn)生的近似時間夭咬,精確到秒的UNIX時間戳啃炸,必須嚴格大于前11個區(qū)塊時間的中值,同時全節(jié)點也會拒絕那些超出自己2個小時時間戳的區(qū)塊卓舵。占4字節(jié)

????????難度:該區(qū)塊工作量證明算法的難度目標南用,已經(jīng)使用特定算法編碼。占4字節(jié)

????????隨機數(shù)(Nonce):為了找到滿足難度目標所設定的隨機數(shù)掏湾,為了解決32位隨機數(shù)在算力飛升的情況下不夠用的問題裹虫,規(guī)定時間戳和coinbase交易信息均可更改,以此擴展nonce的位數(shù)融击。占4字節(jié)

????????Merkle根:該區(qū)塊中交易的Merkle樹根的哈希值筑公,同樣采用SHA256(SHA256())計算。占32字節(jié)

????????如此尊浪,細心的同學會發(fā)現(xiàn)匣屡,區(qū)塊頭總共占了80字節(jié)。

????????區(qū)塊體除了籌幣交易記錄(由一棵Merkle二叉樹組成)外耸采,還有一個交易計數(shù)兴泥。

? ? ? ? 比特幣的任何一個節(jié)點,想生成一個新的區(qū)塊虾宇,必須使用自己節(jié)點擁有的算力解算出pow問題搓彻。因此,我們先了解下pow工作量證明的三要素嘱朽。


二.pow工作量證明三要素

????????在前言中介紹完比特幣區(qū)塊后旭贬,接下來我們了解下pow機制需要滿足哪些要素?

? ? ? ? 1.工作量證明函數(shù)

? ??????????????????在比特幣中使用的是SHA256算法函數(shù)搪泳,是密碼哈希函數(shù)家族中輸出值為256位的哈希算法稀轨。

? ? ? ? 2.區(qū)塊

? ????????????????區(qū)塊頭在前言中已經(jīng)做詳細介紹,這里我們就介紹下區(qū)塊體的?Merkle樹算法:

Merkle樹算法圖解

? ? ? ? 如上圖所示岸军,首先對4個交易記錄L1--L4,分別計算hash(L1)--hash(L4),然后計算hash0=hash0-0+hash0-1和hash1=hash1-0+hash1-1奋刽,最后計算出根節(jié)點的hash值top hash。

3.難度值

? ? ? ? 關于難度值艰赞,我們直接看公式:

????????新難度值=舊難度值*(過去2016個區(qū)塊花費時長/20160分鐘)

????????目標值=最大目標值/難度值

? ? ? ? 新難度值解析:撇開舊難度值佣谐,按比特幣理想情況每10分鐘出塊的速度,過去2016個塊的總花費接近20160分鐘方妖,這樣狭魂,這個值永遠趨近于1。

? ? 目標值解析:最大目標值為一個固定數(shù)(具體可查閱資料了解党觅,這里不做詳述)雌澄,若過去2016個區(qū)塊花費時長少于20160分,那么這個系數(shù)會小杯瞻,目標值將會被調(diào)大些镐牺,反之,目標值會被調(diào)小又兵,因此任柜,比特幣的難度和出塊速度將成反比例適當調(diào)整出塊速度。

????????介紹完pow工作量證明的三要素后沛厨,我們就可以講解下工作量證明的流程

三.pow工作量證明流程

pow工作量證明流程圖

從流程圖中看出宙地,pow工作量證明的流程主要經(jīng)歷三步:

1.生成Merkle根哈希

? ? ? ? ? ? 生成Merkle根哈希在第二章節(jié)中的第2要素中已經(jīng)有講解,即節(jié)點自己生成一筆籌幣交易逆皮,并且與其他所有即將打包的交易通過Merkle樹算法生成Merkle根哈希宅粥,所以為什么說區(qū)塊是工作量證明的三要素之一。

2.組裝區(qū)塊頭

? ? ? ? 區(qū)塊頭將被作為計算出工作量證明輸出的一個輸入?yún)?shù)电谣,因此第一步計算出來的Merkle根哈希和區(qū)塊頭的其他組成部分組裝成區(qū)塊頭秽梅,這也就是為什么我們在前言中大費周章的去提前講解比特幣的區(qū)塊頭抹蚀。

3.計算出工作量證明的輸出

? ? ? ? ? ?下面我們直接通過公式和一些偽代碼去理解工作量證明的輸出:

? ? ? ? ? ?i. 工作量證明的輸出=SHA256(SHA256(區(qū)塊頭))

? ? ? ? ? ?ii. if(工作量證明的輸出<目標值),證明工作量完成

? ? ? ? ? ?iii.if(工作量證明的輸出>=目標值),變更隨機數(shù)企垦,遞歸i的邏輯环壤,繼續(xù)與目標值比對。

? ? ? ? ? 注:目標值的計算見第二章節(jié)的要素3的難度值钞诡。

????????上面的流程圖及解析即pow工作量證明的整個過程郑现。


四.pow共識記賬

? ? ? ? 第三章中講解的是單節(jié)點工作量證明流程,有了這個計算流程荧降,我們就得將其使用起來接箫,在比特幣平臺中,中本聰就是運用的pow工作量證明來使全網(wǎng)節(jié)點達到51%及以上的共識記賬朵诫,以下將介紹pow工作量證明共識是如何記賬的辛友?

? ? ? ? 首先,客戶端產(chǎn)生新的交易剪返,向全網(wǎng)廣播

????????第二废累,每個節(jié)點收到請求,將交易納入?yún)^(qū)塊中

????????第三脱盲,每個節(jié)點通過第三章中描述的pow工作量證明

????????第四九默,當某個節(jié)點找到了證明,向全網(wǎng)廣播

????????第五宾毒,當且僅當該區(qū)塊的交易是有效的且在之前中未存在的,其他節(jié)點才認同該區(qū)塊的有效性

????????第六殿遂,接受該區(qū)塊且在該區(qū)塊的末尾制造新的區(qū)塊

大概時序圖如下:

pow工作量證明共識機制時序圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诈铛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子墨礁,更是在濱河造成了極大的恐慌幢竹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恩静,死亡現(xiàn)場離奇詭異焕毫,居然都是意外死亡,警方通過查閱死者的電腦和手機驶乾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門邑飒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人级乐,你說我怎么就攤上這事疙咸。” “怎么了风科?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵撒轮,是天一觀的道長乞旦。 經(jīng)常有香客問我,道長题山,這世上最難降的妖魔是什么纹烹? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮谒兄,結(jié)果婚禮上求晶,老公的妹妹穿的比我還像新娘。我一直安慰自己浊仆,他們只是感情好客峭,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抡柿,像睡著了一般舔琅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洲劣,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天备蚓,我揣著相機與錄音,去河邊找鬼囱稽。 笑死郊尝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的战惊。 我是一名探鬼主播流昏,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吞获!你這毒婦竟也來了况凉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤各拷,失蹤者是張志新(化名)和其女友劉穎刁绒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烤黍,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡知市,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了速蕊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫂丙。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖互例,靈堂內(nèi)的尸體忽然破棺而出奢入,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布腥光,位于F島的核電站关顷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏武福。R本人自食惡果不足惜议双,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捉片。 院中可真熱鬧平痰,春花似錦、人聲如沸伍纫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莹规。三九已至赔蒲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間良漱,已是汗流浹背舞虱。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留母市,地道東北人矾兜。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像患久,于是被迫代替她去往敵國和親椅寺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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