工作量證明(通常縮寫為“PoW”)是雙花問題的預防機制。絕大多數的加密貨幣都採用這種共識演算法機制。我們將這個方法稱之為保障加密貨幣安全的帳本。
工作量證明屬於最早問世的共識演算法,時至今日仍處於主流之列。中本聰於2008年發布的比特幣白皮書中引入這個概念,但其實技術本身在更早之前就已經構想成型。
在加密貨幣尚未問世之前,亞當·貝克(Adam Back)的HashCash就是工作量證明演算法的早期範例。 HashCash要求寄件者在電子郵件發送前執行少量計算,以此緩解困擾收件者的垃圾郵件問題。這樣的計算對正規寄件方而言,幾乎不費吹灰之力,但如果是發送大量電子郵件的人,負擔會迅速加大。
同一筆資金多次使用就會發生雙花問題。這個術語基本上專屬於數位貨幣領域,畢竟同一筆現金在現實生活中無法支付兩次。例如,咖啡錢支付給收銀員後,就鎖進了收銀機。顧客不可能再用同一筆錢到街對面的咖啡廳再買一杯咖啡。
如果執行數位現金方案,就有可能會發生這種情況。我們先前都複製過電腦文件,只需要複製並貼上,就可以將相同的文件透過電子郵件發送給十人、二十人、甚至五十人。
由於數位貨幣只是數據形式,我們需要提防他人進行複製並在其他地方支付同一筆貨幣。否則,我們的貨幣體系將很快崩潰。
如需進一步了解雙花問題,請閱讀《雙花問題詳解》。
您如果閱讀過我們的區塊鏈技術指南,您就會知道用戶會把交易發佈到網路當中。但這些交易不會立即生效,而只有在添加到區塊鏈後才會有效。
區塊鍊是所有用戶可見的龐大資料庫,因此人人都能查看資金之前的使用情況。試想:您和其他三位朋友共享一本記事本。無論是誰想要用何種貨幣進行轉賬,都會被記錄下來。例如,Alice支付給Bob 5個單位貨幣,Bob向Carol支付2個單位貨幣。
這個過程的複雜之處在於,每次交易都要提及資金來源。因此,如果Bob正在向Carol支付兩個單位的貨幣,其資金來源其實是:Bob從先前與Alice的交易中拿出兩個單元貨幣來支付給Carol。
這樣我們就有辦法追蹤這些貨幣。假如Bob試圖使用之前支付給Carol的同筆單位貨幣進行另一筆交易,很快大家就都知道了。共享組員不會允許該交易計入記事本。
對於小團體而言,上述方式可能非常奏效。大家彼此認識,能達成一致,決定由哪位好友往記事本裡記錄交易。如果是個1萬名參與者的團體,情況會是如何呢?此時,記事本無法有效擴展,畢竟沒人會信任陌生人掌管帳簿。
這正是工作量證明的用武之地。工作量證明確保用戶不得支付其無權動用的資金。工作量證明演算法結合賽局理論和密碼學,根據系統規則,讓所有人都能更新區塊鏈。
區塊鏈就是我們上面提到的記事本。但是我們現在不一一添加交易,而是打包計入區塊。我們在網路中發布交易,創建區塊的用戶隨後會把交易計入候選區塊。只有候選區塊成為確認區塊,交易才會生效。也就是說,交易已添加至區塊鏈。
但是,增加區塊的費用並不便宜。工作量證明需要礦工(創建區塊的用戶)使用各自的資源來獲取特權。資源即算力,可用於哈希運算區塊數據,直到找到破解難題的方案。
雜湊運算區塊資料是指將資料帶入雜湊函數,從而產生區塊雜湊值。區塊哈希值的作用就像“指紋”,是輸入資料的標識且對於每個區塊來說都獨一無二。
要想透過逆轉區塊雜湊值來取得輸入數據,幾乎是不可能的。然而掌握輸入數據,就可以輕鬆確認雜湊值是否正確。只要把輸入提交到函數中,就能查看輸出是否相同。
提供到工作量證明中的數據,雜湊值須符合特定條件。但是用戶不知道如何做到。他們唯一能做的就是把資料帶入雜湊函數,以此驗證是否符合條件。如果不符合,就對資料稍作修改,再得到不同的雜湊值。即使只更改資料中一個字元都會產生截然不同的結果,因此根本無法預測輸出結果。
所以,創造區塊就是猜謎遊戲。一般來說,用戶需要匯總所有要添加的交易資訊和其他一些重要數據,然後同時進行哈希運算。由於資料集不變,需新增一個變數資訊。否則,輸出的雜湊值會始終保持一致。這個變數資料稱為“隨機數”。只要每次試著改變隨機數,就會得到不同的哈希值。這一過程就是所謂的“挖礦”。
總而言之,挖礦就是收集區塊鏈資料並藉助隨機數進行哈希運算,直到找到特定哈希值的過程。如果得出的哈希值符合協議設定條件,即可在網路中發布新區塊。同時,其他網路參與者可更新自己的區塊鏈,納入新區塊。
對於現今的主流加密貨幣,要滿足條件頗具挑戰。網路的哈希率越高,就越難找到有效的哈希值。這樣是為了減緩出塊速度。
透過個人電腦猜算海量雜湊值的高昂成本可想而知。這會耗費大量計算時間和電力。但只要找到有效哈希值,即可獲得協議獎勵的加密貨幣。
讓我們回顧一下目前已了解的內容:
至此,一切都還算正常。但是,如果有人試圖作弊,會發生什麼事?如何制止在區塊中輸入大量欺詐性交易以產生有效哈希值的行徑?
公鑰密碼學因此應運而生。本文在此不做贅述,請閱讀《什麼是公鑰密碼學? 》,了解更詳細的內容。簡單而言,就是我們利用一些合規加密學技巧來驗證某人是否有權動用某筆資金。
建立交易時,您會對其進行簽名。網路中的使用者都能對比您的個人簽章與公鑰,核實二者是否相符。同時,用戶也可核查該人是否有權動用資金,以及輸入總額是否高於輸出總額,即個人支出不得超過持有金額。
網路會自動拒絕含有無效交易的區塊。試圖作弊的代價非常高昂。不僅浪費資源,還得不到任何獎勵。
工作量證明的奧妙之處就顯現出來了——作假成本高昂,誠實操作則獲利頗豐。明智的礦工會追求投資報酬率(ROI),謹慎行事,保證收益。
想要開啟加密貨幣之旅嗎?立即前往幣安購買比特幣吧!
權益證明(PoS)也是眾多共識演算法中的一大矚目。該概念的誕生可追溯回2011年,並已在一些較小協議中實施。但目前仍未在大型區塊鏈中獲得採用。
在權益證明系統中,礦工被“驗證者”取而代之,並且不涉及挖礦和猜測哈希值的競爭。相反,隨機選中的用戶須提議或“鑄造”區塊。如區塊有效,用戶會收到由區塊交易費用構成的獎勵。
當然,選人流程設有門檻,協議將綜合考慮各種因素選取使用者。要獲得資格,參與者必須鎖定質押,即預定數量的區塊鏈原生貨幣。質押的作用類似保釋金。例如,為防止被告逃避審訊,他們須上繳大額保釋金,而驗證者需鎖定“質押”來預防作弊。如出現欺騙行為,全部或部分質押會遭到沒收。
相較於工作量證明,權益證明確實有一定優勢。最明顯的是碳足跡的減少,這是因為權益證明無需高功率的礦場,電力消耗僅為工作量證明的一小部分。
即便如此,權益證明與工作量證明的普及程度還是相去甚遠。儘管被認為是浪費,但挖礦目前已自證是唯一獲得大規模使用的共識演算法。在過去十多年裡,工作量證明為價值數兆美元的交易安全保駕護航。要明確權益證明能否在安全性上與工作量證明相媲美,質押就仍需在實際操作中獲得充分測試。
工作量證明是雙花問題的初始解決方案,且可靠性和安全性也得到了驗證。比特幣證明了我們並不需要依賴中心化實體來預防重複花費相同資金。去中心化環境中的參與者透過巧妙運用密碼學、雜湊函數以及博弈論就能步調一致地追蹤金融資料庫的狀態。