區塊鏈學習者終極指南
什麼是加密經濟學(cryptoeconomics)?以太坊社群開發者Vlad Zamfir解釋道:
“這是一門獨立的學科,旨在研究去中心化數字經濟學中的協議,這些協議被用於管理商品及服務的生產、分配和消費。它也是一門實用科學,重點研究對這些協議的設計和界定方法。”
區塊鏈技術是執行在加密經濟學理論基礎之上的。
我們不妨將此概念分解一下。加密經濟學(Cryptoeconomics)來源於兩個詞彙:密碼學(Cryptography)和經濟學(Economics)。人們常常會忽略其中“經濟學”的成份,而恰恰正是這一成份賦予了區塊鏈以獨特性。區塊鏈並非是首個使用“去中心化的點對點系統”的技術,洪流網站(torrent sites)在檔案共享上對此技術的使用由來已久。然而,從某種意義上來說,這是一次失敗的應用。
為什麼點對點的檔案共享是個失敗的應用?
在一個洪流系統(torrent system)中,任何人都能通過一個去中心化的網路來共享檔案。這個想法旨在讓每個下載者在下載的同時也保持著向網路裡的其他下載者提供種子(上傳已下載的資料)。問題是,這一系統的運作邏輯是建立在榮譽系統制度上的。如果你下載了一個檔案,系統預期你也會提供種子。但是在沒有經濟激勵的情況下,人們認為持續上傳種子是件毫無意義的事情,尤其是當這一行為還將佔據電腦裡更多的儲存空間時。
中本聰和區塊鏈技術
2008年10月,中本聰(一位匿名男士、女士,或組織)釋出了一篇論文,此文為比特幣(Bitcoin)後續的發展奠定了基礎。這篇論文將會動搖網路社群的根基,因為這是我們有史以來第一次擁有了一個以加密經濟學為理論依據的工作模型。與之前的點對點去中心化系統不同的是,人們現在有了經濟激勵去“遵守規則”。不僅如此,區塊鏈技術的真正天才之處在於其克服了拜占庭將軍問題,並創造了一個完美的共識系統(詳見下文)。
比特幣的加密經濟學屬性
那麼,像比特幣這樣的,基於加密經濟學理論的加密貨幣,究竟有哪些屬性呢?
讓我們一一闡述:
- 它是基於區塊鏈技術而產生的貨幣。其中,每個區塊都包含前一個區塊的雜湊值,從而形成一條連續鏈。
- 每個區塊都包含多筆交易。
- 新產生的交易會使所有區塊的特定狀態得以更新。例如,如果A有50個比特幣,且想把其中的20個比特幣傳送給B,那麼在新的狀態下就會顯示:A只剩下30個比特幣,而B擁有20個新的比特幣。
- 區塊鏈必須是不可變的。只可能新增區塊,而不可篡改舊的區塊。
- 僅允許有效交易。
- 區塊鏈應當是可下載的,任何人在任何地點都可以輕鬆接入並查詢某筆特定的交易。
- 如果支付了足夠高的交易費用,則交易可以被快速新增至區塊鏈上。
正如其名,加密經濟學有兩大支柱:
- 密碼學
- 經濟學
區塊鏈技術的執行中使用了多項密碼學函式。讓我們看一下其中一些主要的函式:
密碼學
區塊鏈技術的執行中使用了多項密碼學函式。讓我們看一下其中一些主要的函式:
- 雜湊演算法
- 簽名
- 工作量證明
- 零知識證明
雜湊演算法
簡言之,雜湊演算法是將任意長度的字串對映為較短的固定長度的字串。比特幣則是使用SHA-256摘要演算法對任意長度的輸入給出的是256bit的輸出。那麼,加密貨幣中雜湊演算法的應用有哪些?
- 加密雜湊函式
- 資料結構
- 挖礦
加密雜湊函式:
一個加密雜湊函式有如下特性:
- 確定性:無論在同一個雜湊函式中解析多少次,輸入同一個A總是能得到相同的輸出h(A)。
- 高效運算:計算雜湊值的過程是高效的。
- 抗原像攻擊(隱匿性):對一個給定的輸出結果h(A),想要逆推出輸入A,在計算上是不可行的。
- 抗碰撞性(抗弱碰撞性):對任何給定的A和B,找到滿足B≠A且h(A)=h(B)的B,在計算上是不可行的。
- 細微變化影響:任何輸入端的細微變化都會對雜湊函式的輸出結果產生劇烈影響。
- 謎題友好性:對任意給定的Hash碼Y和輸入值x而言,找到一個滿足h(k|x)=Y的k值在計算上是不可行的。
加密雜湊函式對區塊鏈的安全性和挖礦有巨大的幫助。
資料結構:
有兩種資料結構對於理解區塊鏈非常重要:連結串列和雜湊指標。
- 連結串列:連結串列是依次按順序連線而成的資料區塊,如下圖所示:
在連結串列中的每個區塊都通過一個指標指向另一個區塊。
- 指標:指標是包含其他變數地址的變數。因此,正如其名,指標就是指向其他變數的變數。
- 雜湊指標:雜湊指標不僅有其他變數的地址,還有該變數中資料的雜湊值。那麼,這對區塊鏈而言有何幫助呢?
區塊鏈的構成如下圖所示:
區塊鏈本質上是一個連結串列,其中的每個新區塊都包含一個雜湊指標。指標指向前一區塊及其含有的所有資料的雜湊值。藉此特性,區塊鏈擁有了不可更改性(immutability)的偉大特質。
區塊鏈如何實現其不可更改性?
假設在上面的圖表中,有人嘗試篡改1號區塊中的資料。請記住加密雜湊函式的一個重要特質是任何輸入端的細微變化都會對雜湊函式的輸出結果產生劇烈影響。
那麼,即便有人嘗試對1號區塊裡的資料進行細微的改寫,也會使得儲存在2號區塊裡的1號區塊的雜湊值產生巨大的變化。接下來,這將導致2號區塊的雜湊值發生變化,進而影響儲存在3號區塊的雜湊值。以此類推,最終整條區塊鏈上的資料都會發生變化。這種通過凍結整條鏈條來修改資料的方式幾乎是不可能做到的。正因如此,區塊鏈被認定為是不可篡改的。
每個區塊都有自己的梅克爾根(Merkle Root)。現在,正如你已知道的,每個區塊裡都包含多筆交易。如果將這些交易按線性儲存,那麼在所有交易中尋找一筆特定交易的過程會變得無比冗長。
而這就是我們使用梅克爾樹的原因。
在梅克爾樹中,所有個體交易通過雜湊演算法都能向上追溯至同一個根。這就使得搜尋變得非常容易。因此,如果想要在區塊裡獲取某一特定的資料,我們可以直接通過梅克爾樹裡的雜湊值來進行搜尋,而不用進行線性訪問。
挖礦
加密謎題被用來挖掘新的區塊,因此雜湊演算法仍然至關重要。其工作原理是調整難度值的設定。隨後,一個被命名為“nonce”的隨機字串被新增到新區塊的雜湊值上,然後被再次雜湊。接著,再來檢驗其是否低於已設定的難度值水平。如果低於,那麼產生的新區塊會被新增至鏈上,而負責挖礦的礦工就會獲得獎勵。如果沒有低於,則礦工繼續修改隨即字串“nouce”,直至低於難度值水平的值出現。
正如你所見,雜湊演算法是區塊鏈和加密經濟學中一個至關重要的部分。
簽名
在加密貨幣中,簽名是其中一個最為重要的密碼學工具。在現實生活中,簽名的概念是什麼?又有哪些特性?想象一下,你在一張紙上簽名後,如何鑑定這是一個好的簽名?
- 可被驗證的。這個簽名要可以證明確實是你在紙上簽名了。
- 不可偽造的。沒有其他人能夠偽造及複製你的簽名。
- 不可抵賴的。如果你使用自己的簽名進行簽署,你就無法將其收回或聲稱他人代替你簽名。
但是,在現實生活中,無論簽名有多複雜,都有被偽造的可能性。你無法通過簡單的視覺輔助工具來真正地驗證簽名的有效性,這樣做既無效率也不可靠。
密碼學給了我們一種通過公鑰和私鑰來解決問題的方案。讓我們來看看這兩種祕鑰的工作原理和其對加密貨幣系統的促進作用。假設有兩個人,Alan和Tyrone。Alan想要傳送一些非常重要的資料,而Tyrone想要鑑別這一資料確實來自Alan,他們可以通過使用Alan的公鑰和私鑰來實現這一目標。
有一點必須指出,通過某人的私鑰來確定其公鑰是不可行的。公鑰正如其名,指公開的金鑰,可以被任何人獲取。而私鑰是僅個人擁有的金鑰,你不可以將其與他人分享。
那麼,讓我們再回到Alan和Tyrone的話題,如果他們要使用金鑰來交換資訊,具體該如何操作呢?
假設Alan想把資訊“m”傳送出去,Alan有一把私鑰Ka-和一把公鑰Ka+。那麼,當他把資訊傳送給Tyrone時,他會用私鑰將該條資訊加密,於是資訊變成了Ka-(m)。當Tyrone收到這條資訊時,他可以使用Alan的公鑰來取回資訊,Ka+(Ka-(m)),於是便得到了原始資訊“m”。
總結一下:
- Alan有一條資訊“m”,當他用私鑰Ka-對其進行加密之後,得到加密資訊Ka-(m)。
- Tyrone隨後使用Alan的公鑰Ka+來解密這條加密資訊Ka+(Ka-(m)),從而得到原始資訊“m”。
通過下圖可以得到上述過程的直觀表示:
可驗證性:如果加密資訊能夠用Alan的公鑰進行解密,那就可以100%確定是Alan傳送了該條資訊。
不可偽造性:如果說有其他人,例如Bob,攔截了該條資訊,並用自己的私鑰傳送了一條自己的資訊,那麼Alan的公鑰將無法對其解密。Alan的公鑰只能用來解密Alan用自己的私鑰加密過的資訊。
不可抵賴性:同樣的,如果Alan宣稱,“我沒有傳送資訊,是Bob發的”,但Tyrone卻能夠用Alan的公鑰來解密資訊,那就證明Alan在撒謊。如此,Alan就無法收回他之前發出的資訊,並將其歸咎於他人。
加密貨幣的應用:現在,假設Alan正在傳送一筆交易“m”給Tyrone。首先,他要用雜湊函式對該交易進行雜湊,然後使用私鑰對其加密。Tyrone知道他正在收到一筆交易“m”,因此他能用Alan的公鑰對其解密,並將解密後得到的雜湊結果與他已有的交易“m”的雜湊結果進行比對。由於雜湊函式具有確定性,並且對於同樣的輸入總是給出相同的輸出,那Tyrone可以直接確定,Alan確實傳送了同一筆交易,且其中沒有任何作惡。
更簡單地來說:
- Alan有一筆交易“m”,並且Tyrone知道他正在接收該筆交易。
- Alan對m進行雜湊運算,得到h(m)。
- Alan用自己的私鑰對雜湊結果進行加密,得到Ka-(h(m))。
- Alan將加密資料傳送給Tyrone。
- Tyrone使用Alan的公鑰來解密,Ka+(Ka-(h(m))),並得到原來的雜湊結果h(m)。
- Tyrone用已知的“m”進行雜湊運算,可以得到h(m)。
- 雜湊函式的確定性特徵決定了如果h(m)=h(m),就意味著這筆交易是真實有效的。
工作量證明
當礦工們通過“挖礦”來產生新區塊並新增至區塊鏈上時,其中驗證及新增區塊涉及到的共識系統被稱為“工作量證明”。礦工們使用龐大的計算機算力來解決這道密碼學謎題,而難度值決定了這道題的所需要的計算量。這是區塊鏈技術中最具開拓意義的機制之一。早期的去中心化點對點數字貨幣系統之所以會失敗,是由於“拜占庭將軍問題”導致的,而工作量證明的共識系統為該問題提供了一種解決方案。
什麼是拜占庭將軍問題?
-Image Courtesy: Medium-
好了,讓我們想象一下,有一群拜占庭將軍想要攻打一座城市,他們將面臨兩個不同的問題:
- 每個將軍及其軍隊在地理上相距甚遠,因此通過中央集權來指揮是不可行的,這使得協同作戰變得異常困難。
- 被攻打的城市擁有一隻龐大的軍隊,他們能獲得勝利的唯一方式是所有人在同一時刻一同發起進攻。
為了讓合作成功,位於城堡左邊的軍隊派遣一位信使,向城堡右邊的軍隊傳送了一則內容為“週三攻擊”的資訊。然而,假設右邊的軍隊沒有做好攻擊準備,並讓信使攜帶一則內容為“不,週五攻擊”的資訊返回。而信使需要通過穿越被攻打的城市返回到左邊的軍隊,那麼,問題就來了。在這位可憐的信使身上,很多事情都有可能會發生。例如,他有可能被抓獲、洩露資訊、或被攻打的城市殺害後將其替換了。這將導致軍隊獲得被篡改過的資訊,從而使作戰計劃無法達成一致而失敗。
上述例子對區塊鏈有明顯借鑑意義。區塊鏈是一個巨型網路,你要如何信任他們呢?如果你想從錢包裡傳送4個以太幣給某人,你如何確認網路中的某人不會篡改資訊,將4個以太幣改成40個?中本聰發明了工作量證明機制來繞過拜占庭將軍問題。其執行原理是:假設左邊的軍隊想要傳送內容為“週一進攻”的資訊給右邊的軍隊,他們需要執行如下步驟:
- 首先,他們會給初始文字新增一個“nonce”,這個nonce可以是任何一個隨機十六進位制值。
- 其次,他們將新增了“nonce”的文字進行雜湊,得到一個結果。假設說他們決定僅當雜湊結果前5位是零的時候,才進行資訊共享。
- 如果雜湊結果滿足條件,他們就會讓信使帶著有雜湊結果的資訊出發。否則,他們會持續隨機改變nonce的值,直到得到想要的結果。這一過程不僅冗長耗時,且佔用大量的算力。
- 如果敵人抓到了信使,並企圖篡改資訊,那麼根據雜湊函式的特性,雜湊結果將會劇烈變化。如果城市右邊的將軍看到資訊沒有以規定數量的0作為開頭,那麼他們就會叫停攻擊。
然而,這裡有可能有個漏洞。
雜湊函式並不是100%免碰撞的。那麼,如果城市中的敵人拿到資訊之後將之篡改,並通過不斷改變nonce值,獲得了以規定數量的0作為開頭的結果,那該怎麼辦?雖然極度耗時,但是仍然可行。針對這種情況,將軍們可以使用數字的力量。
假設,如果不是1個左邊的將軍給1個右邊的將軍傳送資訊,而是有3個左邊的將軍來給右邊的將軍們傳送資訊。為了實現上述目的,他們可以製作自己的資訊,然後對累積的資訊進行雜湊。緊接著,再給雜湊結果新增nonce值後,再次進行雜湊。這次,他們希望產生一個以6個0開頭的資訊。
顯而易見,這將會非常耗時。但這次,如果信使被城市抓獲,那麼敵人想要篡改資訊,並且找到符合結果的nonce值,將會耗費無限長的時間,可能歷時數年。例如,將軍們派遣多個信使,那麼,城市在計算到一半的過程中就可能會遭受攻擊並且被摧毀。
右邊的將軍們要做的非常簡單。他們只要將之前給他們的正確的nonce值新增在資訊上,並進行雜湊,然後對照其結果是否匹配即可。對一個字串進行雜湊是非常容易的。那麼,從本質上來說,工作量證明的過程是:
- 尋找一個符合雜湊目標的nonce值,是一個非常困難且耗時的過程。
- 然而,驗證結果中是否有作惡行為卻是非常簡單的。
零知識證明
什麼是零知識證明(Zero Knowledge Proof, ZKP)?ZKP意味著A可以向B證明,他知道特定的資訊,而不必告訴對方自己具體知道些什麼。在這個例子中,A是證明者,B是驗證者。在密碼學中,這尤為有用,因為這將為證明者提供一層額外的隱私保護。
執行一個ZKP,要滿足以下這些引數:
- 完整性:如果陳述屬實,那麼誠實的驗證者能被誠實的證明者說服。
- 可靠性:如果證明者不誠實,他們無法通過說謊來說服驗證者相信陳述是可靠的。
- 零知識:如果陳述屬實,那麼驗證者無法得知陳述的內容是什麼。
舉一個零知識證明的例子。讓我們觀察一下阿里巴巴洞穴是如何運作的。在這個例子中,證明者(P)對驗證者(V)說,他知道洞穴後面暗門的密碼,並提出在不向驗證者透露密碼的情況下證明此事。那麼,其驗證過程如下圖所示:
-Image courtesy: Scott Twombly (YouTube channel)-
證明者可以走路徑A或者路徑B,假設他們一開始決定通過路徑A到達暗門。同時,驗證者V來到入口,他對證明者選擇哪條路徑並不知情,並宣稱他們希望見到證明者在路徑B出現。
如圖所示,證明者確實出現在路徑B上,但萬一這僅是巧合呢?也有可能是證明者憑運氣在出發時選擇了路徑B,卻因不知道密碼被困在了門口。
所以,我們需要通過多次試驗來確定測試的有效性。如果證明者每次都能出現在正確的路徑上,那麼證明者的確可以在不向驗證者透露密碼的情況下,證明自己知道密碼。
區塊鏈中的零知識證明是如何應用的?
許多基於區塊鏈的技術都在使用Zk-Snarks。事實上,以太坊在大都會階段就計劃引入Zk-Snarks,並且將其加入以太坊的功能庫。Zk-Snarks是“零知識簡潔無互動知識認證”的簡稱,是一種在無需洩露資料本身情況下證明某些資料運算的一種零知識證明。
以上內容可用來生成一個證明,通過對每筆交易建立一個簡單的快照來驗證其有效性。這足以向資訊接收方證明交易的有效性,而無需洩露交易的實質內容。
這就實現了以下兩種情況:
- 實現了交易的完整性和隱私性。
- 實現了系統的抽象性。由於無需展示整個交易內部的工作方式,因此係統非常易用。 因此,以上就是區塊鏈使用的一些重要的加密函式。現在,讓我們觀察其第二個支柱,經濟學。
經濟學
正如開篇所述,區塊鏈與其他去中心化點對點系統的區別在於,它給使用者提供了金融和經濟激勵去完成某項工作。和其他牢固的經濟系統一樣,我們都需要通過激勵和獎賞的方式讓人們去完成工作。同樣的,如果礦工行為不道德或者不盡職,那就要對礦工採取懲罰措施。接下來,讓我們去觀察一下區塊鏈是如何將所有的經濟學基礎原理融合進來的。
必讀:加密貨幣博弈:
https://blockgeeks.com/guides/cryptocurrency-game-theory/
區塊鏈用到了以下兩種激勵組合:
第一種激勵組合:
- 代幣:加密貨幣作為獎勵分配給那些活躍度高且為區塊鏈做出貢獻的參與者。
- 特權:參與者可以獲得決策權,這將給予他們收取租金的權利。例如,挖出新區塊的礦工們可以成為新區塊的臨時決策者,將短暫地成為新區塊的獨裁者,並有權決定將哪些交易新增至該區塊。他們可以對收錄在區塊內的所有交易收取手續費。
第二種激勵組合:
- 獎勵:好的參與者可以獲得貨幣獎勵,或因盡職而得到決策權。
- 懲罰:壞的參與者必須支付貨幣罰款,或因作惡而喪失權利。
加密貨幣如何實現價值?
加密貨幣和普通貨幣擁有價值的原因大體上是一樣的,即基於信任。當人們信任某一種商品並賦予其價值,它就成為一種通貨。這就是起初法幣和黃金有價值的原因。因此,當某個給定的商品擁有一個給定的價值時,價值就會隨著供求關係而發生改變。供求關係是經濟學中最古老的規則。
什麼是供求關係?
這是供需曲線,也是經濟學中最常見的一張圖表。如上圖所示,商品的需求與供應呈反比關係。兩條曲線的交匯處是均衡點,也是你想要達到的甜蜜點。那麼,讓我們用這個邏輯來觀察一下加密貨幣,比如說比特幣。
比特幣的發行總量固定在2100萬枚。這即是所有比特幣的市值。由於總量是固定的,那麼當涉及到比特幣的供應時,有幾件事必須要考慮清楚。首先,需要制定一些規則來使比特幣的挖礦變得逐漸困難。否則,礦工們將會肆意挖礦,把剩餘的比特幣開採出來,並投放至市場,從而降低整體價值。
為了確保礦工們不會馬上把所有剩餘的比特幣都開採出來, 我們需要採用如下手段:
- 首先,每隔10分鐘將一個新的區塊新增至鏈上,每新增一個區塊可以獲得25枚比特幣作為獎勵。時間間隔必須是固定的,以確保礦工們不會無規則地在鏈上持續新增區塊。
- 其次,比特幣協議要求難度值必須不斷地被提高。如先前所說,在挖礦過程中,區塊的雜湊值及其nonce值需要低於某個特定的數值。該數值被稱為“難度水平”,通常以數個0作為開頭。當難度提高時,0的數量也在增加。
有了以上兩種方式,挖礦過程變得十分專業,且投入巨大。整個過程確保可以核實市場上所有比特幣的供應量。這也同樣適用於其他基於工作量證明機制的加密貨幣。
加密貨幣的需求有很多決定因素:
- 該貨幣有怎樣的歷史?
- 最近是否被黑客攻擊過?
- 是否能夠持續產生結果?
- 背後的開發團隊實力如何?
- 是否有變得更好的潛力?
- 宣傳力度如何?
所有這些因素都決定了該貨幣的“熱度”如何。其結果是價值圍繞著需求而波動。
區塊鏈中的博弈論
那麼,一個無序的、去中心化的點對點系統是如何保持其誠信的呢?礦工權利很大,且很容易作惡並逃脫。這就是先前嘗試構建去中心化系統失敗的地方。畢竟,使用者是人類,而人類就有作惡的傾向。因此,你如何建立一個有人類誠信的去中心化系統?答案就在一個最基本的經濟學概念中:博弈論。
博弈論本質上是對戰略決策的研究。其核心是做對自己最有利的決策,並記住對手的決策。博弈論中一個最基本的概念是:“納什均衡”。
納什均衡是一種狀態。在此狀態下,每個參與者的策略是對其他參與者策略的最優反應。沒有一個參與者可以通過獨自變換策略來增加收益。讓我們來觀察一個納什均衡的例子。
如上表所示,我們將其稱為“收益矩陣”。上表中的數字代表參與方採取(或不採取)行動而得到的收益數量。讓我們逐一分析:
假設A採取行動:
那麼如果B也採取行動,收益將是4;否則,收益是0。因此,對B來說最佳策略是採取行動。
如果A不採取行動:
那麼如果B不採取行動,收益將是0;否則,收益是4。
因此,我們可以得出結論:無論A如何選擇,B的最佳策略就是採取行動。現在,同樣的,我們來觀察下A的最佳策略是什麼。
如果B採取行動:
如果A不採取行動,收益將是0;否則,收益是4。那麼,對A來說最佳策略是採取行動。
如果B不採取行動:
如果A不採取行動,收益將是0;否則,收益將是4。那麼,無論B如何選擇,A的最佳策略就是採取行動。
因此,我們可以得出結論,對A和B來說,最好的策略都是採取行動。
因此納什均衡是:
-當A和B都採取行動-
那麼,區塊鏈是如何運用納什均衡的呢?因為鏈自身在一個自我強加性的納什均衡裡,所以不誇張的說,區塊鏈是真實存在的,而礦工們也可以維持誠信。
讓我們舉個例子:
如上圖所示,藍色的1,2和3號區塊是主鏈的一部分。現在,假設有個惡意的礦工挖出了一個2A區塊,並企圖用一次硬分叉來滿足自己的財務收益。那麼,用什麼來阻止其他礦工加入他,並在新的區塊後面挖礦?
其實,礦工們有一個非常困難但卻很快的鑑定規則,那就是任意一個區塊在無效區塊上挖礦,即被認定為無效區塊。因此,其他礦工只需忽略無效區塊,並繼續在老鏈上挖礦即可。記住,所有貨幣都是建立在信任和認知價值上的。因此,為什麼會有人將那麼多的資源浪費在一塊有效性無法被確認的區塊上?
現在你要思考的是:萬一有許多礦工決定加入新的礦群,並在其新區塊上挖礦。這個問題在於,區塊鏈網路是一個巨大且廣泛分佈的網路,在裡面進行交流和協作幾乎是不可行的。大部分礦工只會選擇能將其收益最大化的那條路徑,正因如此,主鏈的納什均衡也就得以實現了。
區塊鏈中的懲罰
就像其他任何一個有效的經濟系統一樣,應當有正向激勵和負向激勵。在博弈論模型中如何實現懲罰?想象一個收益矩陣,其中參與者的收益很高,則其對社會的影響也非常高。例如:
假設有A和B兩個人,他們都將要犯罪。現在,根據收益矩陣,當他們犯罪時,他們的收益都很高。因此他們的納什均衡點是都去犯罪。雖然這在邏輯上是有意義的,但會帶來非常惡劣的社會影響。人類多半是被個人貪婪所驅動的,而非利他主義。如果這是真的,那麼世界將變成一個很糟糕的地方。那麼,人類如何應對的?答案是引入懲罰機制。
假設我們有一個系統,每當有-0.5個因子的公共設施從公眾手裡被取走,就要相應的對任何犯罪的人記錄-5個因子的懲罰。那麼,讓我們將懲罰因子加入上面的收益矩陣中,再觀察下表的變化:
如上表所示,收益發生了巨大變化。納什均衡變成了(1,1),不犯罪是最佳策略。現在,懲罰的代價是高昂的,但是社會畢竟損失了0.5個因子的公共設施。那是什麼激勵著社會加入這場懲罰博弈?這個問題的答案是將懲罰作為針對每個人的強制措施,即任何一個沒有參與到懲罰博弈中的人也將會被懲罰。例如說,用稅收供養的警力。警察可以懲罰罪犯,但公共設施的損失會以稅收的形式從公眾手裡取走。任何參與博弈但沒有付稅的人,都會被認作為是罪犯並受到懲罰。
在區塊鏈裡,任何不遵守規則並且非法開採的礦工都會受到懲罰。他們會被剝奪特權和承受被社會排斥的風險。這種懲罰會變得更加嚴厲,一旦權益證明被採用後(稍後詳述)。通過使用簡單的博弈論和懲罰系統,礦工們就能保持誠信。
礦工們更多的動機
當礦工(們)成功地挖到了一個區塊,他們成為了這個區塊的臨時決策者。無論是選擇哪筆交易放入區塊中,還是提高該筆交易的速度,他們都擁有完全的管轄權。他們可以對收錄的交易收取手續費。這對礦工們是一種激勵,因為他們除了能夠獲得挖到一個新區塊的獎勵之外(比特幣的新區塊獎勵是25個BTC,以太坊是5個ETH),還能得到額外的經濟獎勵。
為了讓系統公平,同時也確保每次不是同一批礦工挖到新的區塊,並獲得獎勵,系統會階段性調整挖礦的難度水平。這就確保挖到新區塊的礦工是完全隨機的。長遠來看,挖礦是一個零和博弈,換言之,礦工通過挖出新區塊而得到的利潤終究將根據挖礦的成本來進行調整。
P+Epsilon攻擊
但是,一個工作量證明系統,容易受到一種名為“P+Epsilon攻擊”的特殊型別攻擊。為了理解這種攻擊的原理,我們必須事先定義以下名詞。
非協作選擇模型:在一個非協調選擇模型中,所有的參與者都沒有動機與其他人進行合作。參與者可能形成群體,但在任何時候,這個群體都不會大到佔據多數。
協作選擇模型:在這個模型中,所有參與者都會為一個共同的激勵而協作。
現在,假設區塊鏈是一個非協調選擇模型,但如果有一個動機能夠讓礦工們採取行動去損害區塊鏈的完整性,那該怎麼辦?如果可以通過賄賂使礦工們採取某一特定行動,那該怎麼辦?此時就要引用賄賂攻擊者模型。
現在,假設區塊鏈是一個非協調選擇模型,但如果有一個動機能夠讓礦工們採取行動去損害區塊鏈的完整性,那該怎麼辦?如果可以通過賄賂使礦工們採取某一特定行動,那該怎麼辦?此時就要引用賄賂攻擊者模型。
什麼是賄賂攻擊者模型?
象一個非協調選擇模型。現在,假設有一個攻擊者進入了系統,並賄賂礦工們去相互協作,那該怎麼辦?這個新的模型就是賄賂攻擊者模型。為了成功地賄賂系統,攻擊者必須擁有以下兩種資源:
- 預算:攻擊者願意支付給礦工們去執行某個特定行動的現金總額
- 成本:最後實際支付給礦工們的金額。
然而,如果一個攻擊者決定對區塊鏈發起攻擊,我們會得到一個有趣的謎題….,此時就會出現“P+Epsilon攻擊”。我們可以參考下圖:
-Image courtesy: Vitalik Buterin Presentation.-
想象一個簡單的博弈,例如選舉。如果人們投票給某個人,並和其他人一樣投票給同一個人,那麼就能獲得收益,否則就沒有收益。那麼想象一下,一個賄賂者接入系統,並對某個個體制定了這個規則。如果你投票時其他人沒有投,那麼你會得到“P + ε”的收益。除了普通收益P之外,還有一個額外的賄賂收益 ε。
那麼現在,收益矩陣如下圖所示:
-Image courtesy: Vitalik Buterin Presentation.-
現在想象一下這個場景,博弈中的每個人都知道假設他們投票了,那麼都有可能得到收益,但如果他們不投票,那就只有50%的概率得到收益。
你認為參與者會怎麼做?當然,他們會通過投票來確保收益。這正是有趣的地方所在。正如矩陣中所示,賄賂者只需支付費用“ε”,當有人投票了,而其他人沒有投票的時候。但是,在這種情況下,因為所有人都投票了,納什均衡點轉變為:
是的,賄賂者都不需要支付賄賂費用!
因此,讓我們從賄賂者的視角來看待這個問題:
- 說服群體按照某種方式去投票。
- 無需支付賄賂費用即可實現目標。
這對賄賂者來說是一個巨大的雙贏局面,同時,這對區塊鏈影響重大,尤其是在基於工作量證明的系統中。讓我們把之前的虛擬區塊鏈再拿出來檢驗一下:
假設賄賂者真的想讓區塊鏈進行硬分叉,同時宣佈對那些選擇加入新鏈的礦工們給予賄賂費用 ε,這將激勵整個礦工社群進行協作並加入新鏈。顯然,這需要極高的賄賂費用來實現上述情形,但正如我們在上面的賄賂攻擊模型中所看到的那樣,攻擊者甚至不用給出該數量的金額。根據Vitalik Buterin所說,這就是工作量證明系統最大的問題之一,即易受到“P+Epsilon攻擊”。
解決方案在於權益證明
權益證明機制是針對這類以激勵驅動的攻擊的解決方案。在該類系統中,礦工們需要提取一定比例的私人財富,並將其投資於未來的區塊中。這將是一個更好的經濟系統,因為其中的懲罰更為嚴厲。礦工們將面臨其權益和財富被剝奪的可能性。而不是像之前一樣,僅僅被剝奪權利或在受到指責後逃脫。
因此,這是如何防治“P+Epsilon攻擊”的?假設你是一名礦工,你有一部分的財富被投資於即將新增到主鏈上的一個區塊中。現在,來了一個賄賂者來告訴你,你能夠得到一個額外的收益,如果你將區塊加入主鏈。但是,如果新鏈未被確認,那麼你就有很大的風險會損失你投資在區塊上的所有金錢。此外,正如“P+Epsilon攻擊”所述,你不會從賄賂者那裡得到額外的收益。顯而易見的,對於一個礦工來說,一旦他們投資了一個權益,他們將會繼續在主鏈上工作,而不是參與作惡。
結論
如你所見,密碼學和經濟學以一種非常美妙且複雜的方式結合起來創造了區塊鏈技術。在過去幾年中,它所經歷的成長令人難以置信。未來,它將變得更加強大,且應用更為廣泛。
http://www.aibbt.com/a/14595.html
相關文章
- 【區塊鏈學習】《區塊鏈學習指南》學習筆記區塊鏈筆記
- 區塊鏈學習區塊鏈
- 區塊鏈教程、區塊鏈指南、區塊鏈中文手冊、區塊鏈原理區塊鏈
- 如何學習區塊鏈區塊鏈
- Qtum區塊鏈指南QT區塊鏈
- 區塊鏈學習資料區塊鏈
- 前言-如何學習區塊鏈區塊鏈
- 區塊鏈學習筆記01--區塊鏈常識區塊鏈筆記
- 區塊鏈初學者指南區塊鏈
- 說區塊鏈-學習筆記區塊鏈筆記
- 區塊鏈技術學習指引區塊鏈
- 區塊鏈技術指南學習(二)連結虛擬與現實區塊鏈
- 區塊鏈學習筆記與思考-4區塊鏈筆記
- 區塊鏈習題複習區塊鏈
- 【譯】學習JavaScript中提升、作用域、閉包的終極指南JavaScript
- 區塊鏈開發公司區塊鏈+遊戲”二者結合區塊鏈遊戲
- Angular CLI 終極指南Angular
- Hyperledger Fabric 手動搭建【區塊鏈學習三】區塊鏈
- 區塊鏈專項課程學習筆記區塊鏈筆記
- 區塊鏈學習之Fabric的環境搭建區塊鏈
- 比特幣學習筆記——————7、區塊鏈比特幣筆記區塊鏈
- 劍英的區塊鏈學習手記(一)區塊鏈
- 劍英的區塊鏈學習手記(二)區塊鏈
- 區塊鏈的幾個小故事.小白學區塊鏈01區塊鏈
- 更快學會任何東西的終極指南
- KPI vs OKR:區別與聯絡的終極指南KPIOKR
- 區塊鏈技術實戰學習路線圖區塊鏈
- 學習下區塊鏈技術基礎知識區塊鏈
- 區塊鏈技術學習總結專欄前言區塊鏈
- nmap終極使用指南
- Java日誌終極指南Java
- A/B測試終極指南
- ChatGPT的終極指南概要ChatGPT
- 福布斯:區塊鏈如何終結線上身份造假區塊鏈
- 區塊鏈100講:區塊鏈為什麼叫“區塊”“鏈”?區塊鏈
- 世鏈財經|區塊鏈專案開發指南,如何開發一款區塊鏈專案區塊鏈
- 區塊鏈系列1-區塊鏈概述區塊鏈
- 區塊鏈知識,區塊鏈簡史區塊鏈