區塊鏈通過數學共識機制是非對稱加密算法,即在加密和解密的過程中使用一個「密鑰對」,「密鑰對」中的兩個密鑰具有非對稱的特點:一是用其中一個密鑰加密後,只有另一個密鑰才能解開;二是其中一個密鑰公開後,根據公開的密鑰其他人也無法算出另一個密鑰。在區塊鏈的應用場景中,一是加密時的密鑰是公開的、所有參與者可見的(公鑰),每個參與者都可以用自己的公鑰來加密一段信息(真實性),在解密時只有信息的擁有者才能用相應的私鑰來解密(保密性),用於接收價值。二是使用私鑰對信息簽名,公開後通過其對應的公鑰來驗證簽名,確保信息為真正的持有人發出。非對稱加密使得任何參與者更容易達成共識,將價值交換中的摩擦邊界降到最低,還能實現透明數據後的匿名性,保護個人隱私(如圖1.4所示)。
圖1.4 私鑰、公鑰間的關係
資料來源:巴比特、興業證券研究所
(一)工作量證明機制
所謂工作量證明機制,是指一方(通常為證明者)提交已知難以計算但易於驗證的計算結果,而其他任何人都能夠通過驗證這個答案就確信證明者為了求得結果已經完成了大量的計算工作。
現代最早工作量證明應用是亞當·巴克(Adam Back)於1996年提出的以基於SHA256的工作量證明為反垃圾郵件手段的「Hashcash」(哈希現金)。系統通過要求所有郵件發送時都必須完成大強度的工作量證明,這將使垃圾郵件發送者發大量電子郵件變得很不划算,卻仍允許用戶們在需要時向其他用戶正常發送郵件。現在比特信為了同樣的目的使用了一個類似它的系統,而Hashcash的算法也已經被改造為以「挖礦」為形式的比特幣安全的核心。
比特幣在區塊鏈的生成過程中使用了PoW機制,一個符合要求的Block Hash(區塊鏈散列值)由N個前導零構成,零的個數取決於網絡的難度值。要得到合理的Block Hash需要經過大量嘗試計算,計算時間取決於機器的哈希運算速度。當某個節點提供出一個合理的Block Hash值,說明該節點確實經過了大量的嘗試計算。當然,這並不能得出計算次數的絕對值,因為尋找合理的Hash是一個概率事件。當節點擁有佔全網n%的算力時,該節點即有n/100的概率找到Block Hash。
PoW看似很神秘,其實在社會中的應用非常廣泛。例如,一個人具有的一些技能,如外語口語、樂器或是運動技巧,通常也是一種工作量證明。不用檢查四、六級證書,一個人就能流利地說外語或者演奏樂器,那麼他一定在這些技能上投入了足夠的工作量,而且這個工作量與技能的熟練程度是呈正相關的。如四、六級證書,一般認為在不能作弊的考試裡採用足夠多的客觀題,也可以做到證明工作量的效果,因為一個人從概率上不可能連續蒙對大量的客觀題。因此一般認為文憑也是有說服力的。同樣地,飛行員的飛行小時數也說明問題,如果你飛了一萬小時還活著,大概就不是靠運氣。
在一些其他場合也可以見到PoW的蹤影,比如電子遊戲裡的勝率、K/D比率,在大量的交戰中一定的勝率能說明玩家的實力。同樣有些遊戲裡的成就系統、裝備體系也是PoW,一般認為成就點數高的玩家在遊戲裡投入更多,更不容易詐騙,有時候交易點卡要求裝備等級或者成就點數也是這個道理。
有些人認為這一方法存在缺陷,即工作量證明浪費資源,截至2016年4月,比特幣網絡的算力達到1300PHS,即每秒完成13331兆億次SHA256運算,而最終這些計算沒有任何實際意義或科學價值。美國科技網站Vice曾撰文認為這種方式非常不環保,由於多方面原因,比特幣網絡消耗的能源正日益增長。在最不樂觀的情況下,到2020年,比特幣網絡的耗電量將達到丹麥整個國家的水平。
但是也有觀點認為由於需要巨大的投入,促使攻擊比特幣區塊鏈將會是異常艱難的事情,從而確保了比特幣巨大的安全特性,同時也是人類目前構建的最安全的數據庫。
(二)權益證明機制
權益證明機制是一種SHA256的替代方法,從根本上解決了工作量計算浪費的問題,它不要求證明者完成一定數量的計算工作,而是要求證明者對某些數量的錢展示所有權,通過每一筆交易銷毀的幣天數(coin days)來實現,幣天數代表一個特定的幣,距離最後一次在網絡上交易的時間。在給定的時間點內,只存在有限幣天數,它們在那些長期持有大量貨幣結餘的人手中持續增加。所以幣天數可被視為在網絡中權益的代表(proxy,代理服務器)。每當這些幣有交易時,幣天數即被銷毀,因此不能被重複使用。
簡單地說,PoS就是把PoW由算力決定記賬權變成由持有幣數(以及持有的時間)來決定記賬權。在PoW中,是按照算力佔有總算力的百分比,從而決定你獲得本次記賬權的概率。在PoS中,持有幣數占系統總幣數的百分比(包括你佔有幣數所持有的時間),決定著獲得本次記賬權的概率。
這就類似於現實世界中的股票制度,在一個公司中,大家是按照持股比例來獲得分紅,持有股權相對較多的人獲得更多的分紅權。這種安全機制的理由在於利益捆綁,即大股東比小股東更加關注系統的安全性,所以發動攻擊的話,大股東損失更加慘重。在這個模式下,不持有PoS的人無法對PoS構成威脅。PoS的安全取決於持有者,與其他任何因素無關。
反對者認為PoS會加大整個系統中的貧富差距,持有更多幣的人更容易挖到新幣,即持有股份更多的人會獲得更多的分紅,從而導致系統內貧富差距拉大。但是,擁護者認為,區塊鏈沒有理由去解決系統內的貧富差距問題,而且股份持有者獲得相同比例的分紅也是現實世界中的原則,並沒有人對此有太多的異議。並且在PoW中,那些擁有礦機更多、算力更大的人,也將獲得更多的幣,因此,PoW也同樣存在這樣的問題。
(三)股份授權證明機制
DPoS是一種新的保障區塊鏈網絡安全的算法。它在嘗試解決比特幣採用PoW以及PoS問題的同時,還能通過實施去中心化的民主方式,用以抵消中心化所帶來的負面效應。
在系統中,每個幣就等於一張選票,持有幣的人可以根據自己持有幣的數量,來投出自己的若干張選票給自己信任的受托人。這些受托人可以是對系統有貢獻的人,也可以是投票者所信賴的人,並且受托人並不一定需要擁有最多的系統資源。投票可以在任意時間進行,而系統會選出獲得投票數量最多的101人(也可以是其他數量)作為系統受托人,他們的工作是簽署(生產)區塊,且在每個區塊被簽署之前,必須先驗證前一個區塊已經被受信任節點所簽署。
這種共識機制模仿了公司的董事會制度,或者是議會制度。能夠讓數字貨幣持有者將維護系統記賬和安全的工作交給有能力有時間的人來專職從事該項工作。由於受托人進行記賬也能夠獲得新幣的獎勵,所以他們會努力拉票,並且維護好與投票者的關係及試圖通過參與系統的發展,從而吸引更多人給他投票。
這解決了PoW中的一個主要問題,即在比特幣的PoW系統中,持有比特幣的人對於系統沒有發言權,他們不能參與記賬決定權,也不能左右系統的發展,因為系統發言權主要掌握在礦工和開發者手中。而如果礦工或者開發者做出了對比特幣持有者不利的決定,比特幣持有者除了自己離開系統之外,沒有任何可以做的。而在DPoS中,持有者對於記賬者擁有足夠的選舉權,任何試圖對系統不利或者作惡的人都隨時可能被投票者從受托人的位置直接拉下。
DPoS另外一個巨大優勢就是由於記賬人數量可控,並且輪流進行記賬,能夠通過提供更好的軟硬件環境來構建效率極高的區塊鏈系統。目前看來,DPoS似乎是效率最高的區塊鏈系統,在理想環境下,能夠實現每秒數十萬筆的交易數量。
(四)混合證明機制
由於不同共識證明機制有著不同的優劣勢,有些系統選擇採用多種共識機制的方式來取長補短。較為典型的就是以太坊採用了PoW+PoS的共識機制。