algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点
摘 要
- 預期共識就是上帝擲飛鏢
- 預期共識的優點在于簡單,而且每一次選舉勝出者數量的平均數為1
- 但預期共識不能保證每次選舉的勝出者數量,這是其最大的問題
- 期待有更好的基于可驗證隨機函數的共識算法出現,設計者可獲得20萬美金獎賞
預期共識 就是 上帝擲飛鏢
為了不使此文顯得枯燥乏味,今天一上來先用最簡單的方式來解釋預期共識,保證高中生能夠看懂。
預期共識(EC:Expected Consensus)是一種 PoS (這里S可以理解為 Storage Service,及存儲服務的貢獻)的實現。目標是是的礦工出塊的權益與自己對存儲的貢獻成正比,也就是說,礦機被使用的存儲空間在整個網絡中的總使用空間中所占比例,就是此礦機能夠出塊的概率。這是大家都了解的,也認為這是非常公平,且對整個網絡起到良好促進作用的設計。
我在文章《讓上帝擲骰子 - 對共識機制的淺層分析》一文中對區塊鏈共識機制的要素和共同特點已經有過描述,這里不再重復,但是,要知道的是,無論什么共識機制,一定要具有公平性、不可預知性、可驗證性和可行性(不能太復雜)。預期共識,作為Filecoin目前采用的共識算法,是一種簡單的共識算法,基本符合上述要求。那么它是如何做到的呢?
這里我為了形象說明,不使用骰子這個比喻,而采用另一個方法:擲飛鏢。預期共識的每一輪出塊最重要的一個步驟就是選舉,這里的選舉實際上就是自己進行計算,其實不需要大家投票。按照擲飛鏢的來看,基本上分成以下幾個步驟:
每一輪上靶者稱為這一輪的 Leader,即選舉勝出者,有資格出塊。我們來看一下是否符合上面說到的幾個特點:
- 公平性:沒問題,算力大的礦工命中的機會大, 機會與算力成正比
- 不可預知性:只有上帝知道木頭材料分布在哪些地方,不能預知(實際上是利用hash算法的不可逆來實現的)
- 可驗證性:這個就涉及到VRF(可驗證隨機函數)的問題了。簡單地著,前面所謂的木頭部分在哪里,其實不是隨意的,而是通過密碼學算法確定的,只是這些密碼學算法的不可逆性,保證了對網絡來說的隨機性
- 可行性:預期共識僅僅需要每個礦工在本地計算就可以了,非常簡單,實現起來很容易,計算復雜度低。沒問題。
為什么還有人說不夠好
看了上文,是不是覺得這么棒的東西,太好了!但你要知道,協議實驗室對這個算法是不滿意的,只是在沒有新的更好的算法出來之前,考慮使用此算法。而且,協議實驗室懸賞20萬美金給更好的算法的提出者。那問題在哪里?
問題就在于,上面的每一個飛鏢盤都是獨立的,每個人的運氣也是獨立的。也就是說每個人命中的可能性也是獨立的。那是不是在每一輪中,有可能所有人都不上靶,一個人也選不出來;當然也有可能有好幾個人都上靶,這樣就會有好幾個人出塊了。再想一想,是不是存在這樣的概率所有人都上靶,理論上有,但如果人比較多,概率極低。
這就不是很理想了,因為有些輪沒有人出塊,交易(消息)的過程就會延長;如果有些輪有多個人出塊,這些塊中的消息信息基本上都是重復的,占用區塊空間,浪費。
所以呀,更好的算法當然是最好每輪都能出塊,而且每一輪都只有一個礦工上靶(具有出塊資格)。可以想象,這樣的算法當然需要整個網絡進行協調,進行真正的選舉,那這樣是不是復雜度提高了,是不是可行呢?目前有好些算法被提出來,可以查詢CoA, Snow White, AlgoRand等。但是,有些過于復雜,有些不適合Filecoin。
希望各位算法高手,看在獎金的份上,加油吧!
為什么叫預期共識?
回到一個傻傻的問題,為什么這個共識被稱為預期共識(Expected Consensus)。高中生一定還記得概率論中學過數學期望(Mathematical Expectation)。這里 Expectation 是 Expect 的名詞形式。也就是說一種期望,表明一種概率情況下的平均值。
再回到我們前面的擲飛鏢游戲,想像每一個礦工的算力加起來是不是等于總算力?在這種情況下,每一輪擲飛鏢的勝出者數量的數學期望值就是 1,即平均下來就是一個人中靶。
因為期望每一輪一個人中靶,而實際上預期共識算法僅實現平均下來一個人中靶,就叫它預期共識(Expected Consensus)吧。
真正的算法(前方高能)
具體可參見白皮書或相關文檔,這里簡單做一些解釋,歡迎探討。
如果一個礦工在一輪計算中下式成立,中靶,具有出塊資格。
不等式左邊:H 為不可逆hash函數(比如 SHA256); L為 H 函數值的所占二進制的位數,這里保證了左邊是一個0%到100%之間的一個值;
H 函數內的 <t||rand(t)>是在第 t 輪的一個全網統一的隨機數,這個在第 t 輪才會公布。
不等式右邊:分子為第 t 輪本礦機所擁有的算力;分母為第 t 輪全網的總算力;當然整個式子就是本礦機在全網中算力的占比。
這個不等式就相當于,后邊是你飛鏢盤木質部分的占比,而左邊是你的運氣,如果人品不錯,就擊中了木質部分(中靶)
那么,如何保證每個礦工的木質部分位置隨機呢?就靠下面這個定義:
也就是對上面的隨機數進行簽名,而簽名函數本身是不可逆也是不可預知的,每個人都不同。這就只有上帝知道木質部分放到哪里了。
歡迎關注 胡飛瞳
總結
以上是生活随笔為你收集整理的algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从笑话中看到产品创意
- 下一篇: 使silverlight适应IE窗口大小