前言
工作量證明是誕生的首個共識演算法,迄今仍然佔據主導地位。中本聰於 2008 年比特幣白皮書中介紹了這一機制,但其所涉及的技術已在很久以前構思好。
Adam Back 的 HashCash 就是前加密貨幣時代工作量證明演算法的早期範例。透過要求發送方在傳送電子郵件之前執行少量計算,接收方收到的垃圾郵件數量會有所減少。對於合法的發送方而言,這種計算幾乎毫無成本,但對於電子郵件的群發者而言,可以快速進行加總。
何謂雙重支付?
當多次使用同一筆資金進行消費時,就會出現雙重支付。這個術語幾乎是數位貨幣背景下的專屬產物,畢竟,很難用同一筆實物現金消費兩次。您今天買一杯咖啡,會將現金遞給收銀員,收銀員可能會將這些錢鎖在收銀機中。您不可能跑去對面的咖啡店,用這筆錢買另一杯咖啡。
在數位現金騙局中,就有可能做到這一點。您以前肯定複製過電腦檔案,複製並貼上即可。您可以將同一個檔案透過電子郵件傳送給十個、二十個、五十個人。
由於數位貨幣只是數據,您需要避免人們在不同地方拷貝並消費同一筆貨幣。不然,您的貨幣會立即消失不見。
為何需要工作量證明?
現在,我們有追蹤這些單位的方法。如果 Bob 嘗試用他剛剛轉給 Carol 的同一筆單位執行另一筆交易,每個人都會立即知悉。這個群組不會允許將此交易新增至記事本中。
現在,這種方式可能在小型群組中運作良好。每個人都知根知底,因此,他們可能會一致同意讓哪位朋友向記事本中新增交易項目。如果我們想要建立擁有 10,000 名參與者的群組,會怎麼樣?記事本的想法可能行不通,因為沒有人願意信任陌生人的管理。
這就是工作量證明的切入點。此機制可確保用戶不會消費他們無權動用的資金。透過結合博弈論與密碼學,任何人皆可使用工作量證明演算法來依據系統規則更新區塊鏈。
工作量證明如何運作?
上面所說的記事本就是區塊鏈。但我們不會逐一新增交易,而是將它們集中放入區塊中。我們向網路公告交易,隨後建立區塊的用戶會將它們加入候選區塊中。僅當候選區塊成為確認區塊時,交易方被視為有效,這就表示,此區塊已新增至區塊鏈中。
透過反轉區塊雜湊來獲取輸入資料幾乎不可能實現。不過,知道輸入後,要確認雜湊是否正確,對您而言小菜一碟。您只需透過函數提交輸入,並查看輸出是否相同。
在工作量證明中,您必須提供雜湊符合特定條件的資料。但您不知道如何做到這一點。您唯一的選擇是透過雜湊函數傳遞您的資料,並檢查其是否符合這些條件。若不符合,您需要稍加變更您的資料,以獲取不同的雜湊值。即使是變更資料中的一個字元,也會產生截然不同的結果,因此無法預測可能出現的輸出。
總的來說,挖礦是蒐集區塊鏈資料並將其與隨機數一起進行雜湊處理的過程,直至找到特定的雜湊值。如果您找到滿足協定所載條件的雜湊值,則有權限將新區塊廣播至網路。此時,網路的其他參與者會更新其區塊鏈,以加入新的區塊。
對於當今的主要加密貨幣來說,要滿足這些條件具有相當大的挑戰性。網路上的雜湊率愈高,找到有效雜湊值的難度就愈大。此舉旨在確保不會太快找到區塊。
可以想像,嘗試在您的電腦上猜測大量雜湊值可能費用不菲。您將浪費計算週期及電力資源。但若您找到有效的雜湊值,此協定會帶來加密貨幣獎勵。
我們對目前所講的做個回顧:
- 挖礦需要較高的費用。
- 如果您挖到有效的區塊,可以獲得獎勵。
- 知道某個輸入後,用戶可輕鬆查看其雜湊值,非挖礦用戶可在不消耗太多算力的情況下驗證區塊是否有效。
到目前為止,一切順利。但若您試圖作弊呢?哪些措施會阻止您將一堆詐欺交易放入區塊,並產生有效的雜湊值?
網路會自動拒絕任何包含無效交易的區塊。如果您試圖作弊,可能代價很大。您會白白浪費自己的資源,得不到任何獎勵。
工作量證明與權益證明
也就是說,它已經與工作量證明的成績拉開了差距。儘管這種機制可能被視為浪費,但挖礦卻是被大規模證明的唯一共識演算法。短短十多年時間內,已經穩穩拿下價值數万億美元的交易。要確定權益證明能否與其安全性相提並論,需要在野蠻生長的環境中對權益質押進行妥善測試。
總結
工作量證明是雙重支付問題的原始解決方案,事實證明,這種機制安全可靠。比特幣證明了我們不需要中心化實體來避免重複消費同一筆資金。透過巧妙運用密碼學、雜湊函數及博弈論,去中心化環境中的參與者可就金融資料庫的狀態達成一致。