iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Blockchain

又LAG的EOS.IO技術筆記系列 第 11

EOS使用的共識演算法DPoS

  • 分享至 

  • xImage
  •  

功力不足,如有錯誤還請指教。
更詳細內容還傾參考官方的白皮書

首先,我們要先來了解爲什麼EOS理論上可以達到百萬TPS?這要從白皮書和共識演算法開始說起。

從共識演算法來看(DPoS)

本篇內容主要參考中文版白皮書。但是中文白皮書是參考2017 年 6 月 26 日的草案,實際上已經有了白皮書2.0(2018年3月16日)。(不過下面我會混著目前情況來說)

在原本白皮書裡面,共識演算法使用DPoS。DPoS類似現代代議式民主,每個節點都可以成為候選人,並被推選為產塊者。每個節點同樣也都可以投票給候選人。不同的是,節點需要先透過抵押資源成為股東,才有投票權(成年?)。投票的權重會依照抵押的資源來算,並且可以分攤投票給多個候選人。當然,不想投票也可以贖回資源。

在EOS會選出21個超級節點(議員,輪流產塊/處理民眾問題),以及100個備用節點。且每0.5秒會(必須)產出一個區塊,每個智能合約交易時間不能執行超過30毫秒。

因為沒有競爭問題,並且有著後者的限制。因此可以非常快速的處理交易。

加入拜占庭共識演算(BFT)->(BFT-DPOS)

幣特幣設計之初,有很大就是基於拜占庭問題。不多說這個問題,直接來說說拜占庭式容錯。在EOS中,產出的區塊除了需要產塊者的簽名,還需要其他21個超級節點的簽名,並且,當超過(達到)15個簽名,這個區塊就被認為不可逆的。這個過程應該可以在1秒內達到。

平行處理

對於兩個完全無關的交易,並不會有依賴問題、順序問題。在處理相關交易時,可以平行處理。我曾經做過實驗,在我的雙核心單機系統下,預估理論可達TPS為1400次,如果考慮到使用伺服器主機,加上大量不同無互相關連的交易,實有可能超過百萬TPS。在測試網路上也有最高到9000次,在主網上也出現過4000次的TPS。

安全性

前幾天談過區塊鏈限制三角,去中心化程度、安全、效能。怎樣在三者中達到可接受的平衡,是區塊鏈底層的課題。在EOS上,提昇了效能,去中心程度自然就會被懷疑。EOS相對產塊的能立即中在21個超級節點手中,但整體來說仍然是分散式、去中心化的架構。

另外,防竄改能力與安全性也是被討論的一點。理論上,如果選出超過3成惡意的超級節點(7/21),就有機會產出錯誤區塊。相對來說,使用PoW的比特幣有風險的在51%(51%攻擊)。

我不太清楚爲什麼PoS的容錯能力在3成內。不過這也很好解釋爲什麼EOS認為只要有15個節點簽過名,區塊就是不可逆的。
因為 21-7=14。也就是有15人認可,就算最後6人是惡意節點,也答不到3成--7人的標準。


上一篇
EOS.IO學習資源
下一篇
EOS是個分散式的大型電腦架構
系列文
又LAG的EOS.IO技術筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言