何謂工作量證明 (PoW)?
目錄
前言
何謂雙重支付?
為何需要工作量證明?
工作量證明如何運作?
工作量證明與權益證明
總結
何謂工作量證明 (PoW)?
首頁
文章
何謂工作量證明 (PoW)?

何謂工作量證明 (PoW)?

中等
發佈時間 Dec 6, 2018更新時間 Oct 3, 2022
8m

前言

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

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

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


何謂雙重支付?

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

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

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

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


為何需要工作量證明?

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

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

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

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


工作量證明如何運作?

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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



工作量證明與權益證明

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

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


總結

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