回應小鏈君對DEXON的評論

Po-Chun Kuo
5 min readNov 26, 2018

--

最近看到一篇關於DEXON的評論,原文在https://kknews.cc/tech/blpko6n.html
針對這評論的回應如下

的確不算是新的數據結構,先說這樣的結構是DEXON第一版的演算法,第二版已做更進階的修改,姑且先以第一版的內容回答:其他鏈並非只有保存訊息,而是可以經由全局排序演算法(total ordering algorithm),也就是將所有人的資訊壓在一條鏈上,並且有唯一的排序,這是在DAG一類的共識演算法中的核心共識問題,我們在論文中有仔細說明演算法以及正確性証明。而在第一版中,如果有惡意節點作惡,將不被其他節點”ack”,也就無法進入全局排序中,無法對共識結果造成影響。

Blocklattice是DEXON對這類DAG的稱呼,Blocklattice是一種特殊的DAG,但並非DAG都是Blocklattice。安全性的部份已經上一段落說明,而且 ,並非是多重鏈結構對安全性有影響,應該是在這樣結構上的演算法該如何設計才是重點。原文作者似乎對圖論、資料結構和演算法不甚熟悉。

老實說這段我看不懂他表達什麼,先說了一個錯誤的論述再說自己而驚恐;前提是DAG可以防止單點崩潰,也就是有安全的DAG共識演算法
結論是DAG分片會讓區塊鏈崩潰?
所以換句話說是:有安全的DAG共識演算法會使DAG分片後崩潰?
拜托証明一下,不然我覺得好驚恐,會造成很大的精神損失。

DEXON從頭到尾都沒有用PBFT。亦無隨機的問題。在第一版演算法,它並非隨機演算法 。

隨機數的部分是依賴門檻簽章(threshold signature)為基礎的可驗証隨機函數(verifiable random function, VRF),計算方法為r = Hash(TSig(block hash)),其中TSig是在n個人中須要有t個人的部分簽名經過合併後才能得到,會有以下性質:

  1. 沒有任何人可以預測TSig的值
  2. 任何t個人的部分簽名合併出來的結果都是相同的

而DEXON中只需要將設定為n/3+1即可以保証所有壞人共謀亦無法造成危害。

原文作者真的有看技術白皮書嗎?或許應該先花一點時間唸唸基礎密碼學,否則也是看不懂,連猴子都不會請你去當逗比。

理論極限並非是O(n log n),而是O(n),早在PBFT和HoneyBadgerBFT就已提出這樣的演算法,的確不是隨便能做到的,像是猴子都不請的逗比就做不到。

再說一次,DEXON並不是使用PBFT演算法;希望原文作者好好唸一下共識演算法和分散式演算法,免得出來丟人現眼。

“當節點沒有被驗證…則否定該區塊”,這句的論述可以明顯知道原文作者完全沒看懂演算法,論文的意思是:若該鏈的區塊高度比未出total ordering的最小高度加上k還要小,則當作沒有權重;唯一有權重的是區塊高度恰好等於 未出total ordering的最小高度加上k那個區塊,而超過的部分都以 無窮大為記號,這樣的權重設計在於避免循環投票的問題。

雙花攻擊的部分,正是全局排序中要解決的問題,如果有雙花出現,只有在排序中較前面且合法的才會被執行。其次,如果是單鏈上在同一區塊高度做fork,則最多只會有其中一塊進入全局排序。

好險原文作者沒有接著寫下去,不然就會寫到連猴子都不會多看他一眼了。

代碼的部分都是公開在https://github.com/dexon-foundation

一個人如果完全不懂演算法、密碼學、圖論、機率還想要看懂區塊鏈,是遠遠不夠的。

趕快去看代碼喔!裡面有很多字,也的確沒有半個字,真的很少國家把原本一個字拆剩半個字來用的。

— — — — — — — — — — — —

如果您有任何關於DEXON演算法的問題都可以問我,或是告知我想瞭解的部分,都可以和我聯絡!

--

--