Proof of Space 杜絕浪費,共識機制的「大殺器」

自2009年第一枚比特幣被挖出以來,區塊鏈行業逐漸拓展為一個巨大的全球市場。除BTC以外,LTC、ETH、EOS等各式各樣的區塊鏈項目層出不窮。目前,僅以太坊上的ERC20代幣項目,就超過11萬個;而發佈項目白皮書的公司更是不可勝數。

POW(工作量證明)共識算法

比特幣實現了一種點對點的電子支付系統,而這一分佈式系統的誕生,有賴於其採取的POW(工作量證明)共識算法。目前,絕大多數具備主鏈的區塊鏈項目,仍採用POW或改良後的POW共識算法,僅有一部分項目採用POS(權益證明)或DPOS(股權代理證明)等算法。

POW為分佈式賬本帶來簡明、有效的共識產生機制,然而也產生一些問題:在計算哈希函數的過程中,大量能源被浪費——

有報道稱,2017年因比特幣挖礦而浪費的電量,超過了丹麥一個國家全年的耗電量。[1]此外,由於ASIC等芯片的產生,比特幣也面臨這越來越中心化的挑戰。比特幣的現狀與中本聰最早的設計已經相去甚遠。

而POS、DPOS機制同樣具有中心化的問題,而且投票過程往往較為繁瑣,兩者顯然並非最佳的解決方案。值得一提的是,市面上曾出現一些採用如“交易即挖礦”、“鎖倉即挖礦”、“投保即挖礦”、“挖礦即挖礦”等方案的區塊鏈項目。但本質上,這些項目所發行的還僅僅是以太坊上的ERC20代幣。由於不具備主鏈,這些項目均不需要共識機制;所謂的挖礦方案,本質上屬於空投方案,是一種激勵手段,與區塊鏈的核心技術無必然關聯。

真正要解決POW所衍生的浪費能源、中心化的問題,開發多樣化的挖礦方案,至少需要解決以下一系列技術問題:

(1) 如果不耗費工作量,以什麼作為用戶付出代價的證明?

(2) 該種證明如何被校驗?

(3) 如何確定挖礦競賽的優勝者?

(4) 如果避免主鏈分叉等?

Proof of Space,空間證明

在技術進展的過程中,PoSpace方案作出了重要的探索。PoSpace即Proof of Space,空間證明。PoSpace意在取代比特幣中的PoW機制,成為一種新型的共識機制解決方案。

這一方案目前已在一些區塊鏈項目實施落地。它以用戶支付的硬盤空間作為付出代價的證明,通過下載文件佔據硬盤空間,所佔的空間越大,說明用戶付出越大。

PoSpace可帶來以下好處:極大減少資源浪費;用戶一次性付出硬盤空間後,後續挖礦不需額外增加付出等等。根據一些團隊的測算,PoSpace裡的用戶行為可視作一種拓展性的博弈模型,隨著時間增長,會有越來越多的用戶加入進來。[1]

為應對硬盤空間造假的問題,PoSpace把節點分為兩種角色:證明人和校驗人。證明人即普通節點,需要存儲較大的信息數據(如100G),而校驗人存儲數據庫以及證明人的一小部分存儲信息,以便驗證。

當用戶/證明人初次加入網絡,他需要根據選擇的存儲空間大小,存儲一部分具有特定序列的數據(存儲的數據由用戶的公鑰決定,因此各用戶的數據並不相同)。這些數據以有向無環圖的結構存儲,而每個數據塊之間的關聯關係,以Merkle樹的形式發送給校驗人。

由此一來,校驗人可由公鑰知道證明人存儲的是哪些數據、由發送的Merkle樹知道這些數據以怎樣的結構存儲。

在驗證環節,校驗人向證明人發送一份“挑戰”。這份挑戰是證明人存儲數據塊的某種隨機組合。證明人需要根據挑戰信息,生成對應組合數據的hash值,返還給校驗人,由校驗人驗證該hash值是否正確。

由於挑戰是數據的一種隨機組合,而略微不同的數據都將使得hash值完全不同。因此證明人必須的確存儲了“挑戰”所指明的數據塊,才能生成正確的hash值。而校驗人由於存儲了完整的數據庫,他也可對證明人發回的hash值進行校驗。

證明人有可能僅存儲小部分數據,而仍然通過校驗人的挑戰(證明人所存儲的小部分數據,恰好囊括挑戰所包含的數據組合)。然而隨著“挑戰”的過程多次進行,證明人通過存儲少量數據而生成出正確反饋的概率大幅下降。

因此可通過多次驗證來避免證明人的作弊行為。這就是PoSpace裡的空間確認過程。

“質量函數”的解決方案

而有了校驗用戶存儲空間的方法,仍需通過一些方式來確定挖礦競賽的獲勝者。比較合理的方式應是,存儲空間越大的礦工,越有可能在挖礦競賽中勝出。PoSpace則通過設計一個“質量函數”來實現這個目標。

“質量函數”需要保持一定的隨機性,而同時按照貢獻空間的大小來區分各個礦工獲勝的概率。因此一個簡化的做法是,應對校驗人的挑戰,礦工反饋的hash值(一串數字)直接作為隨機量,並根據礦工所佔的空間對這串數字進行增減。譬如假若礦工存儲的空間總大小為N,則對hash值開N次平方,得到質量函數。這樣一來,礦工存儲的空間越大,質量函數的數值越小。我們可以規定單次挖礦競賽中,質量函數最小的礦工獲勝。

但此時仍存問題:

由於礦工在一次性付出硬盤空間後,在挖礦過程中不需有後續付出,因此參加挖礦競賽不需要付出代價,進行主鏈分叉幾乎沒有成本。為避免礦工隨意分叉造成雙花等混亂情形,我們仍需要一種規則來確定某鏈是唯一鏈,而所有用戶均只記錄這個唯一鏈,這才是真正達成共識。

由於每個區塊由具有最小“質量函數”的礦工挖出,一個自然的想法便是:由質量函數來確定唯一主鏈。我們設定一個數量i,規定從最新的區塊往前i個區塊的質量函數相加,得到鏈的總質量函數。總質量函數最小的那條鏈,可判定為主鏈,在此基礎上,為強調越早的區塊所佔的比重越高,可增加一個折扣函數,對早期的區塊進行縮減(以提高其重要性)。

因此當主鏈出現分叉時,對兩條(或多條)分叉鏈的總質量函數進行計算,即可確定唯一鏈,由此保證僅有一條主鏈,從而使各用戶之間建立起一個分佈式、同時又統一的賬本系統。

總結

PoSpace使用物理硬盤空間作為付出代價的證明,解決了比特幣裡POW持續浪費大量資源的問題,同時可建立一個與比特幣作用相同的電子支付系統。

PoSpace可認為是共識機制在POW基礎上的一大進步。但與此同時,PoSpace仍存在一些問題:如引入了校驗人角色,增加了系統的風險;如何設計和安排校驗人,仍是一個問題;以硬盤空間為證明,存在著中心化的風險,因為少部分人可以通過巨大財力購置大量硬盤空間,持續壟斷挖礦,造成類“51%攻擊”等。中本聰“一枚CPU芯片代表一個個體,每個個體擁有平等挖礦機會”的構想,仍然難以實現。

但不得不說,PoSpace的思路為我們提供了許多啟發,如通過隨機的方式對用戶付出的代價進行校驗;通過設計區塊質量函數確定挖礦競賽的獲勝方式;通過設計鏈質量函數來避免主鏈分叉等。沿著這一思路,我們完全有可能開發出適應不同使用場景的共識機制,如“注意力證明”、“時間證明”等。

此外,PoSpace中硬盤所存儲的空間,若從無意義的字節,改為有意義的內容(如影片等資料),PoSpace或許天然地適用於建立網絡資源共享社區。相信在不遠的將來,空間證明共識機制將迎來更多發展和應用。

參考文獻:[1]Park S, Pietrzak K, Alwen J, et al. Spacecoin: A cryptocurrency based on proofs of space[R]. IACR Cryptology ePrint Archive 2015, 2015. [2] Dziembowski S, Faust S, Kolmogorov V, et al. Proofs of space[C]//Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2015: 585-605.


分享到:


相關文章: