共識協(xié)議是區(qū)塊鏈系統(tǒng)的核心組成要素,是整個系統(tǒng)穩(wěn)定性和安全性的保證。比特幣引入了第一個區(qū)塊鏈共識協(xié)議,即工作量證明(PoW)。在這一共識協(xié)議下,為獲得出塊權,礦工需要不斷進行哈希計算,直到結果小于某個特定值,而持續(xù)的哈希計算耗費大量的能源,這也是 PoW 被人詬病的主要原因。為解決能源浪費的問題,很多新型的共識機制被提出,它們將安全基礎由計算能力轉為依賴其他資源,其中權益證明(PoS)被廣泛研究和認可,作為 PoW 最有利的替代者,我們堅信,PoS 將是區(qū)塊鏈共識未來的發(fā)展方向。立足深入研究已有優(yōu)秀共識協(xié)議(如 Ouroboros、Dfinity)的基礎上,充分借鑒其設計優(yōu)勢,結合多種密碼學手段,我們設計出星系共識協(xié)議。同時,星系共識引入了全新的委托機制,并在萬維鏈完成了概念驗證(POC)。
星系共識的創(chuàng)新點:
1.重新定義了權益并在賬戶模型下(account model)模擬了幣齡(coin age)的概念,保證了共識參與者的穩(wěn)定性。與其被動地被選擇,所有 WAN的持有者需要主動注冊去參與到星系共識中,這樣保證了參與者在共識過程中是活躍狀態(tài),而不是沉睡狀態(tài)(sleepy)。由此增加的穩(wěn)定性使得整個協(xié)議在現(xiàn)實應用中具有更高的實用性。
2.設計了新型安全的隨機數(shù)生成算法,可用于出塊者的選擇以及其他用途,為系統(tǒng)引入熵(entropy)并保證了整個協(xié)議的安全性。
3.設計了 ULS(unique leader selection)算法并用于出塊者選擇。與其他選擇算法相比(如VRF),ULS算法在保持出塊者匿名的同時,保證了出塊者的唯一性,降低了自然分叉的概率。
4.設計了三重 ECDSA 委托簽名方案并實現(xiàn)了完整的委托機制,持有較少WAN 的用戶也能夠參與到共識過程中,從而吸納更多的權益加入到共識協(xié)議中。
5.設計了公平合理的獎勵機制,激勵共識過程中的誠實行為并對惡意行為進行懲罰,保證權益分布健康,防止權益集中(stake centralizaTIon)。
Wanstake 設計
1. 設計概覽
所有的 PoS 共識方案都致力于使參與者通過去中心化的方式達成共識,然而往往忽略了影響共識的一些重要因素,如共識參與者的穩(wěn)定性和活躍度、權益的分布等等。我們的設計通過實現(xiàn)以下目標,保證了共識機制在現(xiàn)實應用中的可行性。
· 高穩(wěn)定性:共識參與者應保持在線并參與到共識過程中。
· 高活性:與其被動地被選擇為出塊者,所有參與者需要通過主動注冊的方式參與到星系共識中,這樣能夠保證共識參與者具有很高的活性,從而不會因為掉線等原因而影響共識過程的正常進行。
· 獨立性:共識參與者無法通過將持有的 WAN 分布在不同的賬戶中或與其他參與者合作將 WAN 放在同一賬戶中而獲得額外收益。
· 權益的健康分布:健康的權益分布不能夠太集中,同時也不能夠太分散。星系共識鼓勵 WAN 持有者將盡可能多的幣投入到共識協(xié)議中,同時也采取方式限制 WAN 的大型持有者(如交易所)對共識過程的影響,防止其控制共識過程。
2. Wanstake
定義:
· WAN:萬維鏈的原生幣,通過鎖定在一個特定的智能合約(即共識智能合約)中轉化為 Wanstake。
· Wanstake:通過鎖定 WAN 得到,WAN 的數(shù)量越多,鎖定時間越長,生成的Wanstake 越多。
· 權益比率:個人持有的 Wanstake 占全部 Wanstake 的比例。
· CSC:共識智能合約(consensus smart contract)的縮寫,WAN 持有者通過將WAN 鎖定在 CSC 中獲取 Wanstake。
· H函數(shù):計算共識參與者 Wanstake 量的函數(shù)。
WAN 的持有者通過將一定數(shù)量的 WAN 鎖定在共識智能合約中去參與萬維鏈星系共識協(xié)議。共識智能合約根據(jù)鎖定的 WAN 的數(shù)量和鎖定時間計算得到Wanstake 的數(shù)量。值得注意的是,考慮到越臨近鎖定時間結束,參與者的誠實性和穩(wěn)定性就越高,Wanstake 的數(shù)量在鎖定時間內(nèi)并不是固定值,而是根據(jù)剩余鎖定時間發(fā)生變化。Wanstake 的持有者以正比于其權益比率(Wanstake raTIo)的概率被選擇參與到共識過程中。當參與者的鎖定時間結束后,將自動失去參與共識的權利,共識智能合約會在一段時間之后將鎖定的 WAN返還到原始賬戶中。
如上圖所示,H函數(shù)在計算 Wanstake 的過程中具有重要作用。為達到上文提到的設計目標,H函數(shù)應當滿足以下幾個性質:
w為鎖定的 WAN 的數(shù)量。
L為鎖定時間長度。
t為余下鎖定時間占全部鎖定時間的比例,鎖定開始時為 1,結束時為 0。
攻擊抵抗分析
? Double spending attacks
在 double spending attacks 中,攻擊者希望令兩筆矛盾交易都生效,想實現(xiàn)這種攻擊只有兩種情況:(i)含有兩筆矛盾或一筆與之前生效交易相矛盾交易的區(qū)塊被確認合法生效;(ii)出現(xiàn)含有矛盾交易的兩條合法分叉鏈。對于(i),協(xié)議要求對任何收到的區(qū)塊進行合法性檢查,包含任何矛盾交易的區(qū)塊將被認定無效。同時我們的 chain-based 共識只接受最長鏈作為合法連,不會出現(xiàn)兩條合法分叉鏈的情況,進而避免 double spending 發(fā)生。
? Grinding attacks
在 grinding attacks 中,攻擊者希望影響出塊者選擇過程以提高自己被選中的幾率。我們的共識中,出塊者選擇基于 random beacon和兩階段的 ULS算法,在隨機數(shù)生成過程中我們采用了門限簽名方案,任何參與者只能決定自己的簽名部分,只要有至少一個參與者是誠實的,攻擊者就無法決定最終隨機數(shù)結果,同時只要參與者中攻擊者數(shù)量低于門限值就無法預知最終隨機數(shù)結果,所以Epoch Leader 的選擇無法通過控制隨機數(shù)生成進行影響。在兩階段的 ULS 算法的 SMA 生成過程中,被選中的參與者只能選擇是否廣播他們的數(shù)據(jù),如果不公布將失去部分收益。而且 SMA 的生成在 SIGN 階段之前,而 Epoch Leaders 排序在 SIGN 階段之后,攻擊者沒有信息優(yōu)勢來影響 ULS 算法的選擇結果。
? TransacTIon denial attacks
在 transacTIon denial attacks 中,攻擊者希望阻止一筆合法交易被確認,我們強調誠實節(jié)點不會拒絕任何合法交易,所以如果要實現(xiàn) transaction denial attacks,就意味著所有的 Slot Leaders 都是惡意的。由于誠實主體假設和 follow-the-stakerate選擇方案,攻擊概率是隨著時間以小于 1/2 的底數(shù)指數(shù)下降的,攻擊者實現(xiàn)攻擊的概率趨近于零。
? Bribery attacks
在 bribery attacks 中,攻擊者希望通過腐蝕誠實參與者為其所用來實現(xiàn)某種惡意目的,例如實現(xiàn) double spending attacks。在我們的共識中,理性的參與者由于兩點原因不會接受這樣的賄賂腐蝕。一是誠實參與者接受這樣的賄賂腐蝕而變成惡意參與者的話,他將失去抵押在智能合約中的權益。二是惡意行為會損害 Wanchain的經(jīng)濟生態(tài)系統(tǒng),進而減低 WAN的價值,參與者的 WAN就會貶值。所以理性參與者不會接受賄賂腐蝕。而且只要保證誠實主體,briberyattacks 也無法影響到共識的安全性。
? Long-range attacks
在 long-range attacks[15]中,攻擊者希望從鏈上一個之前較遠的位置開始重構一條合法鏈,這樣就可以使鏈上數(shù)據(jù)與當前真實狀態(tài)不同,進而實現(xiàn)雙花攻擊等。協(xié)議中我們在有效鏈上設置了一些檢測點(check point),隨著鏈不斷延長,在最后一個檢測點之前的數(shù)據(jù)將不再改變,即新出現(xiàn)的檢測點的區(qū)塊無效,所以攻擊者無法實現(xiàn) long-range attacks。
? Nothing at stake attacks
在 nothing at stake attacks 中,參與者會在多個分叉上產(chǎn)生新的區(qū)塊,無論最終哪個分叉被確認有效都將獲得收益。由于 PoS 共識中生成區(qū)塊幾乎沒有消耗,這種攻擊就很容易發(fā)生,而在 PoW 共識中,礦工不會浪費算力來在不同分叉上產(chǎn)生區(qū)塊,這樣很可能讓他完全得不到收益。同時,這種攻擊常發(fā)生在某一時間段或某一區(qū)塊高度有多個合法出塊者的情況下,例如通過 VRF 進行出塊者選擇的時候,然而在我們的共識中,某一時間段內(nèi)只有唯一合法出塊者,幾乎不會出現(xiàn)分叉情況,參與者就沒有動機發(fā)動 nothing at stake attacks。
? Past majority attacks
在 past majority attacks 中,攻擊者希望腐化某些之前的參與者以取得在過去某段時間里的權益優(yōu)勢。我們假設當前的誠實權益大多數(shù)是合理的,而為了在past majority attacks 中獲益,攻擊者需要與過去某一時間的大部分權益持有者重新產(chǎn)生區(qū)塊來代替之前已有的區(qū)塊,這就類似于前面提到的 long-range attacks,會與檢測點(checkpoint)產(chǎn)生沖突,這種新產(chǎn)生的區(qū)塊會因為位置早于檢測點而不被接受,所以我們的共識不會受到 past majority attacks 影響。
? Selfish-mining
在 selfish-mining 中,參與者會私下保留一個合法區(qū)塊然后提前去構造下一個合法區(qū)塊,由于可以獲得計算時間上的優(yōu)勢,這種情況常發(fā)生在 PoW 共識中,然而在PoS中尤其是我們的共識之中無需如此。由于Slot Leaders是在一個epoch開始時由 random beacon 和 Epoch Leaders 產(chǎn)生的秘密信息決定的,無論參與者是否廣播新的區(qū)塊都無法影響下一個 slot 中出塊者的選擇,所以私下保留當前的合法區(qū)塊是無利可圖的。事實上,如果超出了一個 slot 時間窗口沒有廣播新的合法區(qū)塊的話,出塊者很可能失去此區(qū)塊的收益。所以發(fā)起 selfish-mining 是不理智的,及時發(fā)生也不會影響我們共識的安全性。
星系共識優(yōu)勢
1.可證明安全
星系共識基于 Ouroboros的可證明安全模型設計,在保留其可證明安全共識框架下對核心密碼組件進行了設計提升。
2.自然分叉概率低
星系共識采用 ULS(unique leader selection)算法進行出塊者選擇,與 VRF 算法不同,ULS 算法在保持出塊者匿名的同時,保證了出塊者的唯一性。
3.安全隨機性引入
隨機性的引入對于保證共識的安全性有著積極的影響,星系共識利用基于門限簽名方案的 random beacon 引入隨機性,而 random beacon 的安全性由兩方面保證:一是只要至少 1 名參與者是誠實的即可保證安全,降低了誠實主體假設要求;二是保證 G.O.D (Guaranteed Output Delivery)性質,即使部分參與者掉線,只要在線參與者數(shù)量高于預設門限值就可以成功執(zhí)行。
4.合理的權益設計
PoS 共識中合理的權益設計是一個很有意義的考量,為保持參與者的穩(wěn)定性和活性,我們要求參與者將自身持有的 WAN鎖定在一個特殊的智能合約之中以參與共識,鎖定 WAN的數(shù)量、鎖定時間和剩余鎖定時間比例都是用于計算參與者權益值的參數(shù),這樣的設計在 account model 下模擬了幣齡的概念同時保證了星系共識參與者的穩(wěn)定性。
5.完整的委托機制
星系共識采用我們?nèi)略O計的非交互高效 ECDSA委托簽名算法,實現(xiàn)了完整的委托機制,限制簽名空間且與現(xiàn)有區(qū)塊鏈簽名體系相兼容,保證了任何WAN 持有者皆可參與共識,提升了 Wanstake 的活性。
6.清晰可信的經(jīng)濟激勵模型
星系共識擁有對共識參與者完整的經(jīng)濟激勵模型,由于參與者在鏈上進行信息交互,他們的行為也將被反映在鏈上,我們引入活性系數(shù)的概念來評估參與者的表現(xiàn),活性越高收益越多,這樣的經(jīng)濟激勵機制是清晰明確并令人信服的。