zk-SNARKs如何在去中心化的情況下實現POS的擴容

zk-SNARKs如何在去中心化的情況下實現POS的擴容

現在業界討論最多的擴容方法分為兩種,Layer1和Layer2,對應的就是鏈上擴容和鏈下擴容。鏈上擴容現在熟知的方案有BCH的大區塊,ETH的分片技術等,鏈下擴容熟知的有側鏈,如閃電網絡,Plasma等,當然還有集成了側鏈的主鏈,如Cosmos,Pokaldot等。

在Arthur B看來,目前的這些方案都或多或少有點傾向於中心化。

V神區塊鏈的鐵三角原則:安全、性能和去中心化,兩者爭勝,第三者必傷。鐵三角的大前提是存在的,但達到這個前提的情況下,是一個0到100的過程。如果對比傳統Visa峰值4000筆/s的性能,現在區塊鏈的性能還是小於10的階段。

所以在目前的情況下,既能保證足夠的去中心化的前提,又能擴容,zk-SNARKs(一下簡稱zk)是一個較為合理的方案,特別在Zcash Sapling出來之後。

我們先說為什麼現有的方案傾向於中心化,而zk有機會不呢?(為什麼是有機會,後面會講到)一個重要的判斷的標準就是,出塊人和驗證人是否可以隨時進出系統,行使自己的權利。

BCH的大區塊並不能直接導致中心化,但是基於目前BCH礦工情況,就算是持有BCH,進出驗證體系並不會是一件簡單的事情,這和POW的權利分割是有關係的(這不屬於POS範疇,就不展開了);而ETH的分片,相當於把節點劃分權級,行駛不同的職能,省政府,鄉政府的概念;而閃電網絡,是依賴於節點做的中心,開通的結算通道,自然也是捨棄了一定的中心化獲得了效率。

那zk-SNARKs的擴容方案怎麼實現不捨棄去中心化的前提下擴容?

zk通過縮減驗證體積,加快驗證速度來提高性能,這是個數學解決方案。也就是說,通常區塊鏈廣播交易,需要所有驗證人驗證並簽名後,才能確定為真(有些鏈的簽名還不是最終確定性,Finality),這其中驗證簽名的過程耗時過長,導致性能受到影響。

分片通過縮減簽名人數,Cosmos通過指定人數的投票通過提前得到確定性,EOS通過減少驗證人人數達到全部驗證的快速度,這其中都是通過減少人數來達到的,而zk縮減的是驗證過程,而不是人數,那麼確實是可以保證之前的去中心化的情況下,提高性能的。

zk本身是一個零知識驗證,這個驗證過程本用於隱私交易,但目前看來本地算法生成驗證材料的速度要比網絡傳播驗證要高了去了,這就是zk擴容的本質了。就是現在的edxxxx算法生成公私鑰對一樣,不聯網就生成了,毫秒級別的,如果把大量驗證的過程變成zk的本地算法,提交廣播驗證的數據壓縮到非常小的範圍,那性能的提高可見會是指數級的。

當然,zk的算法同樣中所周知的缺點:

在零知識證明協議部署前,需要設置一些初始參數,這些參數將在每一次證明與驗證中被用到。參數生成後,參數生成算法運行中使用的所有數據必須銷燬,否則整個協議將不安全。

那麼這次參數的生成必然會有一個來源,這個來源如果是偽隨機數還不能被找到規律,如果是真隨機數還得兩本大,且找到可靠人來執行,兩種來源的弊端是明顯的,那麼這個問題就出現了:我們怎麼相信一個這麼依賴的公共參數的系統協議呢?

隨著協議的發展,我們看到了解決該辦法的兩種方案

  1. 允許人,無人數限制,無門檻的進入到提交參數的過程中,並公然銷燬數據(如Zcash 2.0上線前做的The Power of Tau活動,有興趣的小夥伴可以google一下這個有意思的活動)
  2. Eli Ben-Sasson 也提出了另一個具有競爭力的零知識證明協議 STARKs,該協議可不需要考慮可信設置的問題,並依賴於較少的數學猜想。

目前的發展也在進行當中,這也是為什麼我在上面說zk有機會成為既可以保證去中心化的同事,又可以進行擴容的點了。可喜的是,第一個方案已經在Zcash上踐行,並且運行快1個多月還比較完好,所以,我們還是有理由期待zk在Tezos上的擴容了。

zk-SNARKs如何在去中心化的情況下實現POS的擴容

zk-SNARKs如何在去中心化的情況下實現POS的擴容

希望交流的朋友可以添加我的個微人信:kamiesheep


分享到:


相關文章: