文章閱讀頁通欄

一分鐘了解比特幣:挖礦與共識機制

來源: CertiK 作者:CertiK
假期余額嚴重不足,我們的“一分鐘了解比特幣”系列文章也已發布過半。如果在閱讀我們的文章當中有什么問題,不妨在公眾號下面留言,也許我們以后......
假期余額嚴重不足,我們的“一分鐘了解比特幣”系列文章也已發布過半。如果在閱讀我們的文章當中有什么問題,不妨在公眾號下面留言,也許我們以后會推出文章來專門解答你的問題。

通過上一篇文章,我們知道了如何保證財產和信息的安全性、私有性。但是,在沒有中央服務器來協調的情況下,怎樣才能讓每個人都認可他人的賬戶余額確實是賬戶持有者說的那么多呢?

讓我們回想一下之前10個硬幣換一個羊駝的例子:在一個無政府調控的市場里,每個人都隨意交換所屬物,并將交易記錄在冊,最終希望各方都互相認可,達成共識。有了區塊鏈,我們就可以勾勒出一個相似的系統,在這個系統中,廣泛的群體可以達成共識,并就單一有效的交易歷史達成一致意見。那么為了闡述“共識”是什么,我們先要來了解一下整個系統中重要的元素或者說用戶“礦工”。

礦工:特殊類型的用戶

不不不,我們說的不是這個。不是“白雪矮人和七個小公主”里面那個和黃金相關的“小矮人礦工”。

當然如果對比特幣略微熟悉的人們應該已經知道了,礦工并不是所謂早對應黃金“采礦”的礦工。它的定義是:在分類帳中進行記錄任務的一群特殊的、經過信任和驗證的用戶。下次別人再和你提到“挖礦”或者“礦工”的時候,別忘了你要問問他說的到底是哪一個概念。

這個工作并非單獨任命給了某一類特殊人群,而是誰想當礦工就可以成為礦工——沒錯,礦工就是你想當,想當就能當。作為一個商業機會,整個工作過程是開放的。而作為當礦工的基礎,一臺功能強大的電腦必不可少,維護電腦設備的錢也不能少。

礦工們的目的是通過辛勤努力賺得金錢,但也不是人人都能賺到錢的。和別的生意一樣,有些人能抓住機會賺錢,但也有很多人或因為風險太大,或因投資太多,亦或是其他原因放棄了這個機會。

區塊鏈領域的大多數人都知道,礦工會通過高強度計算,來獲得新創建的比特幣。人們可能會想,為了創造新的比特幣,必須以某種方式處理大量的數學公式和計算。

這種誤解其實是個普遍現象。之前有一條很受歡迎的推文闡釋比特幣的游戲規則和獎勵機制時是這樣寫的:“只要讓你的汽車7天24小時點火待命,你就能解出一些數獨游戲,(而只要解決了一個數獨,你就可以用它來)交換一定數量的海洛因。”

這條推文其實是具有誤導性的:即一個比特幣,在當你解決了謎題之后便具有了價值。其實比特幣只是賬本上的一個數字。如果總賬上的一筆交易說我得到了8個比特幣,我直接把這個數字改成9,我就能說自己得到了9個比特幣。根本不需要解決什么數獨或是謎題。

所以,敲黑板了!挖礦的目的不是為了創造比特幣。相反,其目的是執行中央服務器在集中式系統中發出的任務,即處理服務器上每個人的事務并及時更新數據庫。新的比特幣是完成這項關鍵任務的獎勵。這就好比是為了以一種分散的方式管理數據庫而把一切工作都外包給一群自由職業者一樣,只不過在這個行業里的支付方式是比特幣而已。

同樣的,需要大量計算的目的是為了確保礦工們在得到比特幣之前把錢用到該用的地方。因此,這些投入的錢也稱為“工作證明”。礦工需要用這份“證明”證明他們已經做了一定數量的計算工作。

礦工負責監控網絡上發生的所有交易,及時報告并更新信息。這些礦工不是一次在數據庫中記錄一個事務,而是一次添加數百個被稱為“塊”的批量事務。因此“區塊鏈”數據庫也是一個不斷增長的塊鏈。

根據該系統的設計,每十分鐘就會有一個塊發布。塊只能添加,不能修改。每當一個礦工寫了一個區塊,他們就能把一定數量的新比特幣存入自己的賬戶作為回報。每個礦工還可以從用戶那里收取在下個區塊進行交易的交易費。比特幣客戶端會告訴你目前的平均交易費用,這樣你就知道其他人花了多少錢。

如果礦工未能及時了解并更新你的交易,那么這就不好辦了,相當于你的交易從未發生過。如果真是遇到這種問題,你就得等它在新一輪的10分鐘被發現了。(或者嘗試給礦工更高的交易費用)

在這種情境下,普通人其實不再需要擔心更新賬戶,而是需要擔心更新速度。現在有一群發布者(代表礦工)四處走動,通過記錄他們在各賬戶中了解到的每一筆交易來賺錢。一旦有人做了一筆交易,他們需要告訴別的發布者,而且知道的人越多越好。每隔十分鐘,一個發布者就會被選中,然后把更新好的數據(新的賬戶交易記錄)放到網上去,然后分發給市場上所有的成員,這樣每個參與的人都會有一個記錄。這樣一來,每個人的賬本記錄都是一樣的,不會產生共識方面的混亂。

通過使用這個系統,我們可以維護一個一致的、定期更新的賬本,只要我們信任發布者且同意一次發布一個新的有效塊,那么系統中的每個人都能對此賬本達成共識。通過這一公認的系統,發布者或是礦工很容易就能查看有沒有人花他們并沒有擁有的錢。因為發布者或是礦工可以在賬本中查看某人的所有轉賬,并計算這個人的余額應該是多少。

而且,任何人,包括礦工和發布者,都不能偽造別人的交易,因為交易要想完成就需要交易者本人不可偽造的簽名。用戶也不必盲目地信任礦工和發布者,因為他們可以自己驗證現有的交易。

共識

現在,我們需要弄清楚,我們如何確切地讓礦工以及用戶對最新區塊產生共識。上述系統能阻止花別人錢的行為,但是如果不能達成公平、透明的共識,那么欺騙就可以產生“雙花攻擊”。

如果不解決這個問題,那么它就有可能阻止數字貨幣的發展。比特幣成功成為第一款去中心化數字貨幣的原因是,它是第一個解決“雙花攻擊”的數字貨幣。在解釋此解決方案之前,我們有必要解釋清楚“雙花攻擊”到底是什么。

簡單來說,“雙花攻擊”就是用戶所持有的數字資產中的余額,進行多次交易。在不同交易中的花費,雙花不會產生新的貨幣,只能把自己花出去的錢重新拿回來。假設一個礦工可以使一個交易“不發生”即發布這個事務。那么礦工就相當于空手套了一張支票。假設某人賬戶里有價值200美元的比特幣,并有反向交易的想法,他可以花200美元的比特幣購買機械鍵盤,然后通過立即收回交易,并在Xbox上也花200美元比特幣。但實際上他只花了200美元就買到了一臺Xbox和一個炫酷機械鍵盤。這樣一來,賣鍵盤的人就成了輸家,因為他沒有獲得任何回報還丟了鍵盤。

這就是我們需要共識的原因。如果沒有這個協議,就會有多個相互矛盾的歷史版本,有人可能會利用這一點花一次錢買兩種東西。

但是想象一下:你剛剛跌跌撞撞地走進霍格沃茨后面的漆黑、霧蒙蒙的禁林,還丟了你的魔杖,只有一小盞燈籠和微弱的月光幫你照亮。你什么也看不見,只能通過觸摸和聲音導航。一個聲音在霧中呼喚你:”我給你一只魔杖換一枚隱形加隆(魔法世界中的貨幣單位)。”

在這片危機四伏的森林里,沒有魔法能力就如同麻瓜,肯定不能活著出去。而且一只魔杖的價格聽起來還算合理,但是對方怎么知道你有一枚隱形加隆并且你確定他有一只魔杖呢?”來,檢查一下我的帳本。“對方說,同時一只起皺的手把幾張潦草的紙塞進你的燈籠里。你仔細閱讀也看到了魔法簽名,這些確實好像能夠證明賬本的真實性了。

突然,禁林中一個聲音吼叫到:“這賬本是真的!”,緊接著無數聲吼叫圍繞在你周圍 “我在那兒,我看見他拿了我的賬本!他的賬本看起來像我的!”你不寒而栗,此時你的同學哈利和赫敏和不會來救你。其實你不知道這賬本從哪兒來的,你是從別人那里得到它的。你不知道你在和誰說話,因為一個人很容易在數百甚至數千臺不同的計算機上運行相同的程序(例如通過云計算平臺),所以你不知道你在和多少人說話。

禁林里的故事說明,當一個礦工發布一個新塊時,你不知道網絡的其他人是否會接受它。對于其他人來講,他們也不知道它的發布者是否試圖欺騙其他人。假如有多人同時發布新的區塊怎么辦?哪一個區塊將得到被認可呢?也許你會想到少數服從多數原則,讓大家通過投票來決定哪個新的區塊將會成被認可,接下來大家就可以在這個被多數人認可的區塊上繼續向后發布新的區塊,而這一個被認可的區塊也就成為了區塊鏈中真實的歷史中的一部分。但是你不能投票,因為你根本不知道有多少人參與其中。怎么辦呢?

你可以不數人頭,而是數電。這就是昂貴的、浪費能源的采礦部分的更高價值所在。所有的礦工需要參加一場游戲,獲勝者將獲得下一個區塊的發行權。誰在這個游戲上花的電越多,誰的獲勝概率就越高。獲勝的概率大致與輸入系統的電量與所有玩家的總電量成正比。

因此,為了更大概率(既51%)從而使你發布的下一個區塊得到認可,你需要耗費比單位礦工耗電量的總和還要更多的電力。這很難做到,因為礦工都是來自世界各地的志愿者,他們受單純的利益吸引而投身其中。也就是說,除非你有著超過系統51%的算力,不然你不可能偽造一個交易記錄去產生一個讓大家都認可的新的區塊。

通過電力投票,實際上就是用金錢投票。這樣一來,世界上的每個人都在無形中團結起來對抗騙子。所以,讓我們回到叢林中神秘的聲音:他們要想有真正的機會欺騙你,他們就需要有比世界上所有巫師加起來更強大,除非他是鄧布利多或者是伏地魔,而這顯然也是不可能的(因為兩位人物都已經在原著中死去)。更有可能的是,他也許真的只是一個賣魔杖的巫師。所以價錢合適而且你又會使用魔杖的話還是趕緊買了,至少從數學層面來說你是安全的。

關于這個浪費電的游戲,上文談了很多。(挖礦專用,生活中請勿任意模仿、任意浪費電)接下來讓我們來探索一下游戲是如何進行的。歡迎繼續關注CertiK的長假沒剩兩天系列文章:每天一分鐘,了解比特幣(系列三),來了解“哈希函數”。別一聽函數就嚇跑了,不妨把它想成一個游戲。

關鍵詞: 比特幣  比特幣挖礦  共識機制  
0/300
? 时时彩龙虎和计划app