從普通人視角看,區塊鏈是一個線狀鏈式結構,但從實際角度看,區塊鏈是一個樹狀機構,隨著區塊高度的增長,對於每個區塊,以其是否處於最長鏈為依據,競選出唯一的主幹(如圖1中的黑色區塊),沒有成為主幹的其他區塊分支則被淘汰出局,成為孤枝孤塊(如圖1中的藍色區塊)。而主幹末端的多個分支仍然處於競爭狀態(如圖1中的綠色區塊),某分支能否成為主幹,取決於後續產生的大部分割槽塊是否追隨擴充套件該分支,而處於競爭態的區塊所包含的交易都處於待確認的不穩定狀態。
最長分支上的任何區塊被後續M個區塊所追隨,則可認為基本處於穩定態。但M並不是一個絕對常量值,而取決於誠實算力和惡意算力的佔比。若惡意算力佔比超過51%,就可以選擇「近期的任意某個區塊位置」新起一條鏈進行分叉,並以更快的出塊速度擴充套件分叉鏈,最終超越並推翻原先的主幹,如圖2中的兩條紫色分叉鏈。從101處分叉的難度要比從105處分叉的難度大,假設在105處惡意分叉成功,則原鏈干支106.a、107.c、108.b等區塊包含的任何交易都可能被否認。若攻擊者用大量的算力從較遠期的(比如1個月前)某個區塊點實施分叉攻擊,大概率不會成功,原因1:長分叉鏈的鑄造成本昂貴,而且網路中的大部分節點拒絕接收時間戳偏離當前時間N小時的區塊廣播(或根據當前最長鏈包含的區塊時間戳序列計算出一個參照時間值);原因2:對區塊鏈賬本的共識中,包含一定程度上的「人的共識」,若原先的賬本狀態已經得到大部分參與者的認同,僅透過大算力強力操縱是行不通的。
算力分叉攻擊是一種「讓時間短暫倒流,修改既定交易事實,再回到當前」的暴力攻擊。有人認為這種攻擊需要耗費大量算力資源,攻擊者會得不償失,這種觀點是經不起分析的。由於礦池的出現,礦池之間可能形成礦團,算力租賃市場也在不斷髮展,使得發動這種攻擊的可能性越來越大,給人們對虛擬貨幣的信心帶來較大的負面影響。比如Alice給Bob支付了一筆大額交易,然後Alice可能透過臨時租用的大算力進行惡意分叉並否認掉這筆交易,給Bob造成鉅額損失。透過預測攻擊事件對市場心理的影響力,還可能在虛擬貨幣期貨交易市場中選擇做空或做多,有計劃的操縱市場,獲得攻擊之外的收益,因此把系統安全性完全寄託在算力之上,目前已經不太可靠了。
如上所述我們已經分析了單一的PoW共識存在的分叉攻擊問題,以及引入PoW+PoS混合共識解決分叉攻擊的大體思路。分叉攻擊在現實中已經出現過,比如BTG和ETC被攻擊事件。所以本篇將對PoW+PoS混合共識的過程進行分析。總體上可以將「PoS投票子系統」看成是一個觀察者,這個觀察者在持續監視並確定「PoW記賬子系統」的走勢,以避免大算力分叉攻擊的發生。PoS投票子系統自身可以利用BFT類共識演算法、VRF等機制,對投票結果達成一致。
如下圖所示,黑色和紅色區塊構成PoW鏈,紫色區塊表示惡意攻擊的分叉鏈,PoW鏈負責處理轉賬交易和執行智慧合約。綠色和藍色區塊構成PoS鏈,綠色區塊包含了對PoW區塊的51%以上的幣權投票確認,藍色區塊是PoS投票子系統自身的更新,比如持幣使用者重新選舉投票代理人等等。而無論對於哪條鏈,每追加一個新區塊,賬本資料就遷移到一個新狀態。每個新區塊都是對前一時刻賬本資料的狀態更新。
PoS鏈會每隔4個PoW區塊進行一次確認,30號PoS區塊對60號PoW區塊進行幣權投票確認(分別簡稱S30與W60),其包含51%以上的幣權投票交易;
PoS鏈故意延後於PoW鏈,S30在W63~W64的時間點,才對W60進行投票確認,以提高準確率。
PoW鏈最多隔7個區塊就必須對PoS鏈的投票結果做引用確認,例如W67或之前(比如W65)對S30的引用確認;
S31內包含了PoS系統自身的某些變更(比如使用者Alice更換投票代理人);
S32對W64進行幣權投票確認,其包含51%以上的幣權投票交易;
PoS子系統觀察到紫色區塊廣播明顯晚於黑色區塊廣播(比如接收到A0的時間和接收到W66的時間非常靠近),因此S32將A0認定為分叉區塊,所以W70可以引用接續A3區塊,進行分叉融合:兩條鏈上沒有衝突的交易全部生效,衝突的交易,以黑色鏈為準,紫色鏈礦工不能獲取到任何區塊獎勵和交易手續費。分叉融合不是必選設計,這裡只說明其可行性。
假設S33不能被正常產出,則PoW鏈會在W75或之前的位置懸停,無法繼續前進,必須等待PoS子系統再次穩定執行後,才能繼續前進。若PoW鏈懸停時間較長,會導致傳統的挖礦難度調整演算法不夠精準,因此新演算法可參考PoS鏈所包含的時間戳序列,以扣除懸停時間。
PoW+PoS混合共識解決了PoW區塊的概率確定性問題,可以實現最終確定性,大算力礦工必須同時持有51%以上的幣權,才可對系統發起分叉攻擊,這是極其困難的。這裡所介紹的混合共識本質上是將「算力分叉攻擊的隱患」轉化成「PoS投票子系統不能正常運轉的隱患」。但PoS投票子系統運轉失敗後可以透過社群活動,重新再次啟動執行,不會給使用者帶來賬面上的任何財產損失,而51%算力攻擊帶來的雙花交易及其對真實交易的否認卻無法補救。所以在設計公鏈系統時,PoS+PoW混合共識值得考慮,混合共識也有助於一個公有鏈自舉成功,純PoW鏈在自舉過程中很容易被外部惡意算力殺死。
更多數字貨幣資訊:www.qukuaiwang.com.cn/news