VRF抽签与投票的思考
VRF抽簽與投票的思考
?
在區塊鏈上,人類真正實現了“私有財產神圣不可侵犯”
VRF(可驗證隨機函數)在Algorand提出后,被越來越多的公鏈項目應用。VRF的特點在于其能夠產生一個能夠被驗證的隨機結果,通過該隨機結果,在區塊鏈中可以實現隨機“選舉”或“抽簽”。與POS結合后能夠減輕POS的“富者恒富”的現象。
然而我們知道,魚和熊掌不可兼得,提高公平性(去中心化)的代價是犧牲性能或安全性。Algorand選擇了犧牲一定的共識效率來換取公平性(去中心化)。以下是在分析Algorand、Ont等使用VRF的共識算法中,對VRF抽簽與投票的一些思考。
Algorand概括
Algorand作為第一個使用了VRF的共識算法,其共識流程可以大致總結為三個步驟:
POS + Random
VRF本質是隨機函數,而在區塊鏈系統的共識流程中不能用完全公平的隨機,因為出塊者需要有激勵,同時每個節點的貢獻值也并非一致。 所以通常都會在VRF抽簽之前加一層POS,將“更優”的一批節點先選出來作為候選人。
對于POS+Random 的共識算法,一般有如下三種情況:
Case 1. 隨機抽簽出一個提案者,其他節點驗證并接受該節點提案。
Case 2. 隨機抽簽出一個提案者與多個投票者,需要投票者對區塊達成共識。(代表:Tendermint)
Case 3. 隨機抽簽出多個提案者與多個投票者,需要投票者從多個提案區塊中選出一個并達成共識。(代表:Algorand)
下面我們來一一解析以上case:
Case 1即為很純粹的POS,希望通過隨機抽簽抑制“富者恒富”的現象。但純粹的POS有Nothing at stake的問題,提案者可以基于多個分叉鏈提出不同的區塊,使得分叉進一步加劇。(以太坊Casper FFG依靠懲罰金來解決,但這無疑也增加了系統的復雜度)
Case 2很類似于自帶viewchange的PBFT,一般容錯率也為1/3。投票者的目的在于給于deterministic confirmation,且部分解決了Nothing at stake問題。為何說是“部分解決”,因為為了最大化提高區塊通過的概率,提案者仍會給多個分叉鏈投票。但由于有投票者這一角色,可保證在網絡不分區的情況下理論上不會產生分叉。同時,由于隨機抽簽采用公開的信息,提案者也能夠被預測。
Case 3其實是Algorand的高度簡化版,Case 2也可作為Case 3的一個特例。一方面,多個提案者之間相互競爭,促使提案者本身提出正確的區塊;另一方面,對于抽取多個提案者的場景,可采用VRF作為隨機函數:節點使用公開的信息和自己的密鑰直接在本地運行選舉函數判斷自己是否被選中,其他節點能夠驗證但無法預測提案者。
這里值得注意的是,在分布式網絡中,VRF無法完成固定數量的抽簽任務,原因是VRF的一個Input是節點私鑰,這使得每個節點產生的隨機值均不相同,全網只能驗證結果是否合法,但無法設計統一的標準使得某個隨機結果唯一性地符合某個條件。
VRF抽簽的優勢
在VRF出現之前,為了滿足選舉信息的可驗證,通常采用公開的信息作為Input,通過公開的隨機函數得出隨機結果,以隨機結果作為依據進行抽簽。 由于所有信息均為公開,故所有節點都可以在本地計算出抽簽結果。
但上述抽簽方案有一個很大的問題:攻擊者有一定的時間窗口能夠預測出抽簽結果,及時對被選舉人實施攻擊。
VRF很好地解決了這個問題:
VRF抽簽的弊端
VRF為隨機抽簽提供了隱私性和可驗證,但也帶來了一個很棘手的問題:丟失全局的抽簽信息,降低投票共識的成功率
由于VRF需要私鑰作為Input,其他節點只能通過網絡通信獲得相應proof后才能驗證隨機結果是否合法,所以任何節點都無法得知全網的真實選舉情況的。這對投票類共識算法帶來了巨大的挑戰。投票類共識算法必須設置一個通過閾值(如2/3以上),只有通過該閾值才視為投票通過。而基于VRF的共識算法丟失了全局的選舉信息后,只能以期望值的形式設置閾值,使得投票退化為概率型投票。
如何理解概率型投票?首先,我們需要明確確定型投票的定義——投票結果應遵循大部分提案者的意見(通過或不通過)。當投票結果不一定會遵循大部分提案者的意見,那么就屬于概率型投票。對于由VRF選出的投票者的投票階段,由于閾值的設置與實際選舉情況是割裂的,則即使大部分投票者同意提案,提案仍有可能達不到閾值,從而顯示“不同意”的結果,與大多數投票者的意志相背。我認為,之所以Algorand在BinaryBA*中要設計多輪投票,并且每一步均重新選舉投票者,其目的是通過不斷重選提高實際投票達到閾值的概率,通過多輪投票提高達成共識的概率。
BinaryBA*算法
總結
VRF算法最早由Silvio Micali(圖靈獎得主,Algorand的創始人)在1999年提出,也是由他首次將其引入到區塊鏈中,為區塊鏈的共識算法提供了嶄新的研究思路和解決方案。但我們在分析并使用VRF的時候,不僅需要分析VRF本身,也應該關注先驅者是如何思考和設計基于VRF的共識算法過程。一味地將VRF遷移至其他的共識算法,可能并不能達到預期的效果,甚至反而會帶來其他的不確定性風險。
總結
以上是生活随笔為你收集整理的VRF抽签与投票的思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随想,产品思维和开发思维
- 下一篇: linux的fq软件github,曾经霸