bCamp 是由國內區塊鏈頂級開發者、極客與投資人共同發起,旨在發現和培養國內頂級的區塊鏈技術合夥人,圍繞區塊鏈核心技術打造國內頂級的區塊鏈開發者社羣。

讀懂“工作量證明”,纔算讀懂“區塊鏈”

讀懂“工作量證明”,纔算讀懂“區塊鏈”

跌宕起伏的比特幣,撲朔迷離的 ICO,給本就聒噪的年末增添了不少科技的新鮮與錯失的焦慮。打着“去中心化”招牌的區塊鏈技術,很多人覺得懂,又說不清楚;很多人感覺跟自己相關,又不知何從入手;很多人覺得這裏蘊藏極大機會,又覺得風險也極大,荷蘭鬱金香的質疑不絕於耳。

比特幣到底是什麼?區塊鏈是如何“繞過”中心的?無論最後成敗,瞭解區塊鏈到底是什麼以及它的基本原理是有必要的。不能總是用概念充當解釋,用情懷預測市場。基於此,本文試圖用最通俗易懂的語言來聊聊爲什麼比特幣的正常流轉需要“挖礦”,爲何確認一筆比特幣交易需要幾十分鐘和消耗電量幾百度以上。這也就是 Proof-Of-Work“工作量證明”— 讓區塊鏈能夠去掉中心機構的核心機制。

區塊鏈是一種技術,比特幣是該技術的一個明星級應用。 與支付寶、微信支付類似,比特幣屬於互聯網支付,不需紙鈔也沒有摸得着的真金白銀。但微信和支付寶處理的是人民幣,是政府發行的法定貨幣,代表民衆對權力機構的信任。而比特幣是去中心化的虛擬“貨幣”,背後完全沒有國家、機構或法律背書,完全是參與者的集體管理。

那問題來了,如果沒有人出頭,信任從何而來?一個在阿根廷的比特幣持有者給一個身在貴州的買家匯去三個比特幣,這個貴州人不認識這個阿根廷人,爲什麼相信他發了三個幣,而不是一個幣?爲什麼相信他的賬戶裏增加的三個幣正好是阿根廷人賬戶裏減少的三個幣。既然沒有一家銀行管理和處理交易,我們又怎能相信比特幣不是互聯網虛擬世界裏憑空產生、可被人隨意改動的一堆數字?

比特幣的驚歎之處正在於此,它用區塊鏈技術爲上述問題給出答案,達成 Trustless Consensus“無信任的共識”—比特幣用戶之間無需互相認識和信任即可正常交易(但也因此在全球範圍內浪費了巨大的電力資源)。

與銀行處理匯款收款類似,比特幣系統有一本賬,記錄了比特幣用戶的賬戶信息(賬戶裏有多少幣)和交易情況(誰給誰在什麼時候匯了多少幣)。爲給自己牟利,賬本管理人有可能在這本賬上做手腳,比如往自己相關的賬戶裏憑空增加幾個幣,反正都是些電腦上的數字。更何況,比特幣用戶都是匿名的,這讓作假的成本又一次降低。作爲防備,比特幣系統給這本賬做了很多份拷貝,將他們分散給全球成千上萬的比特幣“記賬人”保存。 記賬人也被稱爲“礦工”,本身也是比特幣用戶。他們之間沒有老大,沒有中心,只是互聯網上一個個節點。他們負責管理手上這本記錄了比特幣 2009 年出現至今所有匯款記錄的賬本拷貝。當有新的匯款請求出現,比特幣系統在全球範圍內按一定概率隨機選擇一個記賬人,讓他驗證這筆交易併爲之記賬,然後把更新的賬本“廣播”給其他記賬人。這個被選中的記賬人也因此獲得一定的記賬報酬。

這種分佈式的賬本優勢很明顯。即使你篡改了其中一本或幾本賬本拷貝,全球範圍內還有成千上萬的真實賬本拷貝在別人手中你沒法改。喫瓜羣衆聽到這裏,立馬拍手稱快,讚歎比特幣的偉大與劃時代。然而實際情況遠沒有這麼簡單。心懷不軌的記賬人總會琢磨怎麼篡改手上這本賬並且讓其他記賬人接受這本賬來爲自己獲利。試想一下,如果賬本有分歧,有兩本賬在網絡裏被廣播的時候,其他記賬人到底該相信哪本賬?沒有中心機構作比對,善良的我甚至不知道我手上這本賬是不是那本真的賬。少數服從多數的原則在這個虛擬世界裏是不管用的,因爲壞人總可以在網絡裏註冊足夠多的記賬人賬號來形成大多數優勢。即使提高註冊成本也無濟於事,因爲註冊成本只是固定性投入。如果賬本有風險,用戶又怎能放心持有和使用比特幣呢?

保持分散的賬本拷貝的內容一致,防止惡意篡改,不能像共享單車那樣依靠情懷,只能依靠提高成本,提高做假賬的成本。我們先說一下比特幣賬本的長相。每個記賬人手上的賬本拷貝是一個由很多“小賬本”按時間順序串接而成的(如下圖)。

讀懂“工作量證明”,纔算讀懂“區塊鏈”

每個小賬本在內存裏的大小爲 1M,可記錄約兩千條比特幣匯款信息。最關鍵的是,每個小賬本上有個類似猜數字的“謎語”,它的謎面由上一個小賬本的謎底和這個小賬本的兩千條匯款信息共同組成,而這個小賬本的謎底又成爲下一個小賬本謎面的組成部分。這樣的謎面和謎底,環環相扣,把多個小賬本連接成一個鏈條。小賬本也被稱爲區塊,如上述方式連接成區塊鏈。

猜這個謎語特別無聊,就是在“湊數字”。湊對的可能性及小,需要計算機嘗試許多許多遍。全球範圍內的記賬人,不停地用手上最強的計算機來猜這個謎語。而最快猜對新的小賬本謎底的記賬人,就能給待處理的兩千條匯款信息記賬,並將更新的賬本鏈條廣播給其他記賬人。別的記賬人雖沒猜對,但他們很容易驗證廣播來的賬本是否猜對(這是密碼學的成熟技術)。之後所有記賬人用這個新賬本鏈條替換他們手上的老賬本鏈條,然後接着猜下一個小賬本的謎語。前面說過,記賬是有報酬的(包括匯款的手續費和新發的 12.5 個比特幣獎勵),因此記賬人會盡可能加強手中的運算能力來加大最快猜對謎語的可能性。有趣的是,無論全球範圍內記賬人投入的計算資源有多少,比特幣系統會自動提高或降低猜謎語的難度,把最快猜對謎語的時間維持在“十分鐘”左右。換句話說,用比特幣交易,最快也要等十分鐘才能得到確認。

這樣鏈條式的賬本和猜謎語的記賬方式是如何防止賬本篡改的呢?假如當前鏈條上最新一個小賬本是上圖的 013,而一個心懷不軌的記賬人要篡改 011 上的交易記錄爲自己牟利。一旦 011 的賬本信息被改動,這個小賬本的謎面就變了,之前猜對的謎底就變成了錯的,這個記賬人必須重新猜這個小賬本的數字謎底。猜對以後,下一個小賬本 012 的謎面跟着變了,他又得猜。然後下一個小賬本 013 的謎面也變了,還得接着猜。當他猜完三個小賬本,至少三十分鐘過去了,這期間發生了什麼?

這期間其他記賬人手上的賬本鏈條早已變長,新的小賬本 014,015,016 等已經產生,而這個使壞的記賬人手中的賬本長度再也趕不上網絡裏的那本賬。有同學說,他能否用兩臺電腦,一邊猜之前小賬本的謎底,一邊猜新出現小賬本的謎底,兩邊都不耽誤?當然不行!因爲這些小賬本的謎面和謎底是前後關聯、環環相扣的。所以,從自身利益出發,這個記賬人還是從良比較好,爭取爲新交易記賬獲得記賬報酬,而不是得不償失地篡改歷史賬本。而當網絡裏有兩本不同的賬被廣播時,記賬人們只需接受最長的那本賬即可,因爲最長的鏈條對應的工作量(計算量)付出最大。

上面所說的記賬過程就是比特幣的運作過程。 那一個個小賬本,就是“區塊”。它們串接而成的人手一份的鏈條賬本,便是“區塊鏈”。那成千上萬的記賬人,就是俗稱的“礦工”。所謂“挖礦”,無非是每個記賬人用最好最多的計算機來猜數字謎語,用設備和電量消耗來證明自己的賬本正確。在網絡的計算資源相對分散的情況下,大家只需要在最長的區塊鏈上工作,就能保證系統信息的真實性。換句話說,在一個互不認識、沒有中心、缺乏互信的環境裏,我們只能相信付出成本最大的信息記錄,這就是題目中提到的“工作量證明”機制!

到現在,大家可能理解了區塊鏈是如何做到去中心化的。沒有中心機構的權威背書,區塊鏈系統一方面提供報酬鼓勵記賬人蔘與記賬,另一方面通過記賬人之間的資源消耗競賽來提高作假成本、確保賬本真實性。記賬人(礦工)之間爲獲得比特幣報酬而爭奪“記賬權”。只要比特幣兌美元價格被市場擡高,礦工羣體就有動力去增添計算設備和消耗更多電量來競爭記賬(挖礦)。

因而區塊鏈網絡裏記賬所消耗的電量與比特幣價格成正比。這就是爲什麼在當前的比特幣高價之下,確認一筆交易需要耗電至少五百度以上(全球的記賬人爲競爭這筆交易記賬權所消耗的總電量,而且是保守估計),耗時也至少幾十分鐘(因爲每十分鐘最多確認兩千條交易)。這遠遠超過了在支付寶或微信上做一筆支付所需要的邊際電量與時間。天下沒有免費的午餐,這就是區塊鏈爲了去中心化、爲了信息可追溯所付出的最起碼的“代價”!

內容來源:意見領袖

作者:李洋

原文鏈接:

http://finance.sina.com.cn/zl/china/2018-02-22/zl-ifyrswmu9730420.shtml?cre=zl&r;=user&pos;=1_5

讀懂“工作量證明”,纔算讀懂“區塊鏈”

_
_

以下是我們的知識星球,歡迎有興趣的小夥伴加入我們,共同成長 !

_
_

讀懂“工作量證明”,纔算讀懂“區塊鏈”