何謂工作量證明 (PoW)?
首頁
文章
何謂工作量證明 (PoW)?

何謂工作量證明 (PoW)?

中等
發佈時間 Dec 6, 2018更新時間 Mar 8, 2024
10m

前言

工作量證明 (通常簡寫為 PoW) 是一種可防禦雙重支付的機制。大多數主要加密貨幣都使用這種機制作為共識演算法。我們將其稱為保護加密貨幣帳本安全的方法。

工作量證明是誕生的首個共識演算法,迄今仍然佔據主導地位。中本聰於 2008 年比特幣白皮書中介紹了這一機制,但其所涉及的技術已在很久以前構思好。

Adam Back 的 HashCash 就是前加密貨幣時代工作量證明演算法的早期範例。透過要求發送方在傳送電子郵件之前執行少量計算,接收方收到的垃圾郵件數量會有所減少。對於合法的發送方而言,這種計算幾乎毫無成本,但對於電子郵件的群發者而言,可以快速進行加總。


何謂雙重支付?

當多次使用同一筆資金進行消費時,就會出現雙重支付。這個術語幾乎是數位貨幣背景下的專屬產物,畢竟,很難用同一筆實物現金消費兩次。您今天買一杯咖啡,會將現金遞給收銀員,收銀員可能會將這些錢鎖在收銀機中。您不可能跑去對面的咖啡店,用這筆錢買另一杯咖啡。

在數位現金騙局中,就有可能做到這一點。您以前肯定複製過電腦檔案,複製並貼上即可。您可以將同一個檔案透過電子郵件傳送給十個、二十個、五十個人。

由於數位貨幣只是數據,您需要避免人們在不同地方拷貝並消費同一筆貨幣。不然,您的貨幣會立即消失不見。

如需更深入地了解雙重支付,請查閱雙重支付的說明


為何需要工作量證明?

如果您讀過我們的區塊鏈技術指南,就會知道用戶會將交易廣播至網路。不過,這些交易不會立即視為有效。當它們新增至區塊鏈時,才會出現這種情況。
每個用戶都可以看到區塊鏈這個大型資料庫,以便查看這些資金是否已被消費過。不妨想像一下,您和三個朋友都有一個記事本。如果任何時候您想要劃轉所使用的任何單位,就記錄下來:Alice 付給 Bob 五個單位,Bob 付給 Carol 二個單位,如此類推。
還有一個錯綜複雜之處:每執行一筆交易,您都會提及交易的資金來源。因此,如果 Bob 向 Carol 支付兩個單位,該分錄實際上會顯示如下內容:Bob 從早前與 Alice 進行的交易中向 Carol 支付了兩個單位

現在,我們有追蹤這些單位的方法。如果 Bob 嘗試用他剛剛轉給 Carol 的同一筆單位執行另一筆交易,每個人都會立即知悉。這個群組不會允許將此交易新增至記事本中。

現在,這種方式可能在小型群組中運作良好。每個人都知根知底,因此,他們可能會一致同意讓哪位朋友向記事本中新增交易項目。如果我們想要建立擁有 10,000 名參與者的群組,會怎麼樣?記事本的想法可能行不通,因為沒有人願意信任陌生人的管理。

這就是工作量證明的切入點。此機制可確保用戶不會消費他們無權動用的資金。透過結合博弈論與密碼學,任何人皆可使用工作量證明演算法來依據系統規則更新區塊鏈。


工作量證明如何運作?

上面所說的記事本就是區塊鏈。但我們不會逐一新增交易,而是將它們集中放入區塊中。我們向網路公告交易,隨後建立區塊的用戶會將它們加入候選區塊中。僅當候選區塊成為確認區塊時,交易方被視為有效,這就表示,此區塊已新增至區塊鏈中。

但附加一個區塊費用不低。工作量證明要求礦工 (創建區塊的用戶) 用一些自有的資源來換取特權。這種資源就是計算能力,可用於對區塊資料進行雜湊,直至解出謎題。
對區塊資料進行雜湊即表示您使其通過雜湊函數來生成區塊雜湊。區塊雜湊的運作方式類似於「指紋」,這是您輸入資料的標識,對於每個區塊都是唯一的。

透過反轉區塊雜湊來獲取輸入資料幾乎不可能實現。不過,知道輸入後,要確認雜湊是否正確,對您而言小菜一碟。您只需透過函數提交輸入,並查看輸出是否相同。

在工作量證明中,您必須提供雜湊符合特定條件的資料。但您不知道如何做到這一點。您唯一的選擇是透過雜湊函數傳遞您的資料,並檢查其是否符合這些條件。若不符合,您需要稍加變更您的資料,以獲取不同的雜湊值。即使是變更資料中的一個字元,也會產生截然不同的結果,因此無法預測可能出現的輸出。

因此,如果您想創建一個區塊,相當於是在玩猜謎。您通常會蒐集有關想要新增之所有交易的資訊及其他一些重要資料,然後對它們集中執行雜湊處理。但由於您的資料集不會變更,您需要新增一條可變資訊。否則,您始終會獲得與輸出相同的雜湊值。這個可變資料就是所謂的隨機數 (nonce)。您每嘗試一次,這個數字都會發生變更,因此,您每次都能獲得一個不同的雜湊值。這就是所謂的挖礦

總的來說,挖礦是蒐集區塊鏈資料並將其與隨機數一起進行雜湊處理的過程,直至找到特定的雜湊值。如果您找到滿足協定所載條件的雜湊值,則有權限將新區塊廣播至網路。此時,網路的其他參與者會更新其區塊鏈,以加入新的區塊。

對於當今的主要加密貨幣來說,要滿足這些條件具有相當大的挑戰性。網路上的雜湊率愈高,找到有效雜湊值的難度就愈大。此舉旨在確保不會太快找到區塊。

可以想像,嘗試在您的電腦上猜測大量雜湊值可能費用不菲。您將浪費計算週期及電力資源。但若您找到有效的雜湊值,此協定會帶來加密貨幣獎勵。

我們對目前所講的做個回顧:

  • 挖礦需要較高的費用。
  • 如果您挖到有效的區塊,可以獲得獎勵。
  • 知道某個輸入後,用戶可輕鬆查看其雜湊值,非挖礦用戶可在不消耗太多算力的情況下驗證區塊是否有效。

到目前為止,一切順利。但若您試圖作弊呢?哪些措施會阻止您將一堆詐欺交易放入區塊,並產生有效的雜湊值?

此時,公鑰密碼學就派上用場了。本文不會加以深入探討,您不妨查閱何謂公鑰密碼學?進行全面了解。簡而言之,我們使用了一些巧妙的加密訣竅,可讓任何用戶驗證某人是否有權限轉移他們試圖花費的資金。
創建交易時,您會對其簽名。網路上的任何用戶皆可將您的簽名與您的公鑰作比較,查看它們是否相符。他們還將核實您是否確實可以消費您的資金,以及您的輸入總和是否高於輸出總和 (即您所擁有的資金是否高於您的消費資金)。

網路會自動拒絕任何包含無效交易的區塊。如果您試圖作弊,可能代價很大。您會白白浪費自己的資源,得不到任何獎勵。

這就是工作量證明的絕妙之處:作弊代價不菲,但誠實行事卻可獲得收益。任何理性礦工都會追求 ROI,因此可以預計他們的行事方式可保證帶來收入。



想開始使用加密貨幣嗎?於幣安買入比特幣!



工作量證明與權益證明

共識演算法有很多,但最受期待的其中一種演算法是權益證明 (PoS)。這個概念可以追溯至 2011 年,並已在一些較小型的協定中實行。但大型區塊鏈並未加以採用。
在權益證明系統中,礦工會被驗證者所取代。這裡不涉及挖礦,亦不需要爭相猜測雜湊值。反而用戶是隨機選擇的,他們若被選中,必須提議 (或「偽造」) 一個區塊。若區塊有效,他們將獲得由區塊交易手續費組成的獎勵。
這不單單可以選擇任何用戶,儘管協定會依據許多因素來做出選擇。如需符合資格,參與者必須鎖定一個權益質押,這是區塊鏈原生貨幣的預定金額。權益質押與保釋金的原理相似:就像是被告砸入大量金錢,以免他們逃脫審判,驗證者會鎖定權益質押來阻止作弊行為。若他們不誠信行事,其權益質押 (或其中一部分) 將被沒收。
與工作量證明相比,權益證明確實有一些好處。最令人矚目的是,碳足跡更小。由於權益證明不需要大功率的礦場,消耗的電力只佔工作量證明的幾分之一。

也就是說,它已經與工作量證明的成績拉開了差距。儘管這種機制可能被視為浪費,但挖礦卻是被大規模證明的唯一共識演算法。短短十多年時間內,已經穩穩拿下價值數万億美元的交易。要確定權益證明能否與其安全性相提並論,需要在野蠻生長的環境中對權益質押進行妥善測試。


總結

工作量證明是雙重支付問題的原始解決方案,事實證明,這種機制安全可靠。比特幣證明了我們不需要中心化實體來避免重複消費同一筆資金。透過巧妙運用密碼學、雜湊函數及博弈論,去中心化環境中的參與者可就金融資料庫的狀態達成一致。