[原創(chuàng)?區(qū)塊鏈關(guān)鍵概念必讀系列-08]撕開“工作量證明”神秘的面紗

一、引子

8月5日,夏日炎炎,3年級一班的小明百無聊賴,正在做數(shù)學(xué)暑假作業(yè)。眼前出現(xiàn)了一道附加題,讓小明丈二和尚摸不著頭腦——“X^2-22X+130=9,求X”。小明剛剛學(xué)過一元一次方程,這種一元二次方程(事實上他還根本不知道什么是二元一次方程)超出了所學(xué)教材的范圍,他還不知道怎么解答,抓耳撓腮,不知怎么辦。

百思不得其解后,小明想到了一種笨笨的方法——從自然數(shù)1開始,一個一個帶入等式左邊去嘗試。于是,

X=1,左邊不等于右邊

X=2,左邊不等于右邊

X=3,左邊不等于右邊

……

X=11,左邊=右邊。

于是,小明得到了答案,X=11。

小明的故事,將對我們通俗理解工作量證明,有很大的幫助作用。他解題的方法,有一個特點:求解通過正向代入嘗試的方法進(jìn)行的,而沒有通過倒推的方式求解X(雖然倒推的解題過程更高效,但他不會)。

二、工作量證明及其機(jī)理

工作量證明的想法于 1993 年就出現(xiàn)了。所謂工作量證明(Proof of Work / PoW),簡單理解就是一份證明,用來確認(rèn)節(jié)點做過一定量的工作,誰的工作量足夠多,誰就能獲得相應(yīng)的獎勵。

區(qū)塊鏈中最早應(yīng)用工作量證明的,就是比特幣挖礦了,挖礦的過程是通過求解哈希函數(shù)進(jìn)行的。

什么是哈希函數(shù)(也成為散列函數(shù))呢?

它給定一個輸入值x,通過一個固定的規(guī)則,會對應(yīng)產(chǎn)生F(x)[即哈希結(jié)果]。

如果我們知道F(x),想求解X,只能和小明一樣,通過逐個嘗試運算的方法去解答,而不能倒推。

當(dāng)然,僅僅這樣理解哈希函數(shù),是有所偏差的。哈希函數(shù)與小明解題,有不同之處。

小明所解的題,是可以通過倒推來直接算出答案的,他只是因為不懂,才不得已通過嘗試的方法去解答。但哈希函數(shù)從理論上和設(shè)計上,就沒有倒推的可能,所有人只能通過不斷嘗試去找答案。

由于找到X有獎勵(比特幣),所以對于同一個F(x)[哈希結(jié)果],可能會有許多人在同時進(jìn)行運算嘗試。誰先找到這個x,獎勵就歸誰。

這就是工作量證明:如果你達(dá)到了某一項任務(wù)的目的(與哈希結(jié)果F(x)對應(yīng)成功),那么就會被認(rèn)為做出了一定的工作量(像小明一樣反復(fù)嘗試了很多次)。誰先達(dá)到目的,基本可以認(rèn)為誰的工作量大,按照工作量證明的原則,誰就應(yīng)該獲得獎勵。

有人會問,如果小明沒有按自然數(shù)順序進(jìn)行嘗試,只是隨便找個數(shù)代入,他也可能因為運氣好,第一次就發(fā)現(xiàn)了11是答案啊。如果另一個人按照順序代入嘗試,那肯定會比小明后找到答案,這樣,小明的工作量小,但找到了答案獲得了獎勵,工作量證明不就失效了嗎?

的確如此,不過這個問題可以通過提高解題難度來解決。

小明解的題,需要的工作量很小,如果從1開始按順序試自然數(shù),只需要11次就可以成功,所以小明碰巧找到答案的概率是很高的。但哈希函數(shù)與這道題的難度根本不在一個量級上。哈希結(jié)果通常是以n個0開頭的16進(jìn)制字符串,0的個數(shù)越多,求解X的難度越大。例如,如果一個哈希結(jié)果以4個0開頭,那么,我們需要大約4251次計算才能找到對應(yīng)的答案,通過偶然發(fā)現(xiàn)找到正確答案的概率極低。如果增加零的數(shù)量,難度會上升,而且上升速度極快,相應(yīng)地,依靠運氣解答的概率也會迅速下降,幾乎可以忽略不計。

這種情況下,如果誰先找到哈希函數(shù)的答案,那么,我們幾乎可以肯定,他所做的工作量比其他人要多。難度到達(dá)一定級別,這個論斷正確的可能性就接近100%了。

三、對工作量證明認(rèn)識的誤區(qū)

從上面的例子我們可以看出,工作量證明其實并非通過直接度量所有人的工作量然后進(jìn)行比較,而是通過工作結(jié)果(尋找X)合理推測工作量的多少(即先找打答案的人,工作量是最多的),并且這種推測是建立在概率基礎(chǔ)上的,并非100%正確。通過提高難度,我們可以提出運氣成分,使這一推測的正確概率接近100%。

而且,工作量證明并不是簡單的推測所有工作量,而是推測所有有效工作量。如果礦工去打了5次籃球,這并不會被算作他的工作量。

四、工作量證明的優(yōu)缺點

通過對工作結(jié)果進(jìn)行認(rèn)證,來證明完成了相應(yīng)的工作量,是一種非常高效的方式。這是工作量證明的一大優(yōu)點。試想,如果有1000個人在解答開頭有4個0的哈希結(jié)果,那么,如果直接記錄每個人的工作量,我們需要對所有人進(jìn)行監(jiān)測記錄,記錄結(jié)果多達(dá)4251000條。而如果通過結(jié)果進(jìn)行認(rèn)證,就只需要記錄一次(即誰最先找到了答案)就可以了。

但工作量證明也有缺點,最讓人頭疼的就是資源浪費。求解哈希函數(shù),因為難度極高,所以需要大量計算機(jī)不停工作,耗費的電力也極多。僅僅以2015年的數(shù)據(jù)來看,一個比特幣交易就需要消耗和1.57 個美國家庭 一天一樣多的用電。到了2017年,一筆交易已經(jīng)要耗費一個家庭一周的用電。根據(jù)專家預(yù)測,到2020年,比特幣交易可能會消耗和丹麥一樣多的電力。這是一個極其嚴(yán)重的問題,也正是因為如此,一批幣圈人士開始探索新的共識機(jī)制。

五、日常應(yīng)用

工作量證明的機(jī)理,雖然我們聽起來新鮮。但它在生活中的應(yīng)用卻無處不在,幾乎所有人都經(jīng)歷過。

比如畢業(yè)證。一個大學(xué)生被授予本科畢業(yè)證,需要學(xué)習(xí)一定量的課程,積累一定量的知識。但這個過程并不需要學(xué)校指派一名監(jiān)工去跟蹤你4年的大學(xué)生活。而是通過你的畢業(yè)論文和各科成績是否合格來進(jìn)行合理推測。如果各科成績和論文都達(dá)到了規(guī)定的標(biāo)準(zhǔn),基本可以推測,你完成了相應(yīng)的學(xué)習(xí)任務(wù),因而授予畢業(yè)證。此外,像其他證件,比如駕駛證、從業(yè)資格證、職稱評定等等,都是如此。

所以,工作量證明一直存在于我們的日常生活中。即使你是對區(qū)塊鏈一知半解的幣友,對這個概念也無需恐懼。撕開“工作量證明”的內(nèi)衣,你會發(fā)現(xiàn),其實它并不神秘。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容