文章閱讀頁通欄

PoW+PoS混合共識的簡單示例

來源: 嘉楠區塊鏈研究院 作者:
需要PoW+PoS混合共識的原因 采用PoW共識算法的典型例子有Bitcoin和Ethereum,但兩者又有所不同,Bitcoin的PoW共識通常被稱為Nakamoto算法,而Ethereum的PoW共識做了......
需要PoW+PoS混合共識的原因

采用PoW共識算法的典型例子有Bitcoin和Ethereum,但兩者又有所不同,Bitcoin的PoW共識通常被稱為Nakamoto算法,而Ethereum的PoW共識做了一些改變,被稱為GHOST算法。后來又出現了Conflux項目,在GHOST的基礎上融合了DAG并行出塊技術,將系統的吞吐量提高到網絡帶寬極限。這些系統雖有細節差異,但凡屬PoW一類,則必包含PoW的一些普適性特征,這些特征通常會展示出兩面性:其優點是通過缺點來體現的,沒有那個缺點,就不能展現出那個優點。比如,

缺點:區塊鑄造代價高、能源消耗大;

優點:包含了計算歷史軌跡和能源消耗軌跡,歷史慣性強,外部力量很難篡改賬本或摧毀系統。

PoW能夠保障系統安全的前提是:攻擊者難以控制超過51%的算力。而礦池的出現實際上已經破壞了這個前提,不同礦池之間可能會簽訂商業協議,形成可一致行動的礦團,具備發動51%攻擊的能力。比如在BCH-ABC與BCH-SV的分叉事件中,外界難以確認是否真的發生了算力攻擊戰,但是在分叉剛開始的一段時期內,BCH的兩條分叉鏈很明顯都處于礦團的控制之下。

區塊鏈系統的參與者大致可分三類角色:出塊者(礦池)、持幣者(用戶)、開發者。在PoW系統中,持幣者是最弱勢的群體,區塊鏈系統的理想目的應該是服務用戶,數字資產既不屬于礦工,也不屬于開發者,而屬于用戶,但在大算力攻擊、系統分叉等情況下,用戶并沒有任何選擇權,其權益得不到有效保障,這是不合理的。所以在新系統的設計中,有必要同時引入PoW和PoS,形成混合共識機制,使用戶能夠通過持有的幣權進行投票,以消除大算力攻擊制造出的分叉鏈,使礦池只能作為出塊者提供服務,而不能成為系統的實際控制者,對開發者也形成一定程度上的制衡,而不是讓區塊鏈系統成為開發者的技術試驗田和游樂場。

采用PoW+PoS混合共識的區塊鏈新項目是比較多的,我在這里給出一個簡單的設計方案,其核心思想是:礦工只負責出塊,若算力攻擊制造了達到一定長度的臨時分叉鏈,持幣者可投票進行分支選擇與交易合并,分叉鏈區塊可以被包容到整個區塊鏈賬本中(可增加賬本的累積工作量計算軌跡)。若持幣者不關心系統運行情況,可以選擇棄權,或將投票權委托給權益代理人,由權益代理人進行投票表決。權益代理人系統之間可通過BFT類或其他低能耗的共識算法對投票結果達成一致意見。在區塊鏈系統的設計中,只要擁有防止某種攻擊的有效方法,實際上發生這種攻擊的概率就變得很小。因此PoS子系統只需要進行少量的干涉,就能確保整個系統正常運行。

PoW算力分叉攻擊的過程分析

從普通人視角看,區塊鏈是一個線狀鏈式結構,但從實際角度看,區塊鏈是一個樹狀機構,隨著區塊高度的增長,對于每個區塊,以其是否處于最長鏈為依據,競選出唯一的主干(如圖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.crhupc.live/news

關鍵詞: PoW  PoS  混合共識  
0/300
? 好运彩3单双