鏈與製作人| 被看做公鏈未來的分片技術,究竟離我們還有多遠?
卢晓明
2018-06-22 10:16
本文约7409字,阅读全文需要约30分钟
分片技術需要解決的四大關鍵問題。

公鏈已成兵家必爭之地。

交易所、錢包等送水行業格局初現,機會難覓。公鏈則非也。曾經有無數人說過,今天的區塊鏈領域,就像90年代的互聯網,所有人都想做協議和操作系統。

PC時代,微軟成為行業霸主。移動互聯網時代,谷歌穩居市值首位。也許我們無法預測未來哪些場景搬上鍊會有未來,甚至無法預測區塊鍊是否有未來。但我們可以肯定的是,如果區塊鏈真的能帶來價值互聯網,必然需要能承載如此使命的公鏈。

然而現實是,這樣的一條公鏈仍未出現。

EOS被寄予厚望,但現在主網剛上線,判斷格局言之過早。從目前來看,可擴展性、安全性、去中心化這區塊鏈的“不可能三角”,將網絡中的節點分成不同的碎片,各分片可以並行處理不同交易,這樣可以並行處理相互之間未建立連接的交易,以提高網絡並發量。分片方案的特點是,隨著節點數目的增加,網絡吞吐量也隨之增加。

,將網絡中的節點分成不同的碎片,各分片可以並行處理不同交易,這樣可以並行處理相互之間未建立連接的交易,以提高網絡並發量。分片方案的特點是,隨著節點數目的增加,網絡吞吐量也隨之增加。

其基本思想是,將網絡中的節點分成不同的碎片,各分片可以並行處理不同交易,這樣可以並行處理相互之間未建立連接的交易,以提高網絡並發量。分片方案的特點是,隨著節點數目的增加,網絡吞吐量也隨之增加。

其市值一度漲至加密貨幣21位其市值一度漲至加密貨幣21位其市值一度漲至加密貨幣21位

數據庫

數據庫數據庫中,它將數據庫分割成多個片並將這些片放置在不同的存儲設備(分區)中,這樣每個分區的數據量相對就會小很多,從而滿足系統的性能需求。業內人士認為,分片增強了系統性能和可擴展性(Scalability),但與此同時也使系統的開髮變得更為複雜。例如,有兩條記錄分別處在不同的服務器上,若需要建立關聯,那麼很可能表示“關聯”的記錄就必須在兩個分區內各放一條。此外,一旦某事務需要跨數據分區處理,將大大降低性能。了解這個之後,我們也許就更能理解分片落地到區塊鏈領域需要解決的問題。

Zilliqa對區塊鏈分片的研究始於2015年,當時新加坡國立大學師生Prateek Saxena和Loi Luu在國際頂級安全會議CCS上發表了關於分片的論文《根據專訪內容,我們以問答形式將內容整理如下:根據專訪內容,我們以問答形式將內容整理如下:

根據專訪內容,我們以問答形式將內容整理如下:

根據專訪內容,我們以問答形式將內容整理如下:

一、Zilliqa特點:分片技術、PoW+PBFT混合共識機制

Odaily:Zilliqa使用的分片策略是什麼?分片技術落地情況如何?

賈瑤琪:Zilliqa的分片技術可以這樣簡單地去理解:假設我們有一個包含1000個節點的網絡, Zilliqa將自動地把該網絡分成10個、每個包含100個節點的分片,且所有分片可並行地處理交易。如果每個分片每秒能處理n個不同交易,則所有分片每秒可一併處理10n個交易。這是一種水平的擴容方式,即網絡吞吐量隨著節點數量增加而呈線性增長,這是其他擴容方式所不具備的特點。

我們目前在做的分片包括網絡分片(network sharding)、交易分片(transaction sharding)和智能合約分片或計算分片(computational sharding)。

其中最重要的是網絡分片,因為其他分片機制都建立在網絡分片之上。簡單來理解,網絡分片就是將整個網絡分組,每個小組叫做一個分片(shard),所有分片同時處理不同的交易。在這個過程中,我們通過不斷刷新網絡和分片來保證安全性。與此同時,根據我們發表在CCS安全會議上的論文,當每個分片的節點數量不低於600個時,其中三分之一的節點是惡意的概率為百萬分之一。

交易分片交易分片。值得注意的是,這些交易是無法自主選擇進入某個分片,因為每個分片裡面的節點會拒絕執行不屬於自己分片的交易,這樣也保證了處理交易的安全性。

目前,我們已成功落地了網絡分片和交易分片,將於本月底發布2.0版公測網,這一版本的公測網將允許普通用戶作為節點加入網絡成為礦工。

Odaily:我們知道,單純的分片技術本身是無法保證交易的高吞吐量的,因為吞吐量也取決於每個分片的單次時間以及出塊速度。 Zilliqa使用的共識機制是什麼?

賈瑤琪:Zilliqa採用的是PoW+PBFT混合機制。

在公有鏈中,惡意節點可能會試圖通過操縱多個節點來破壞系統,並影響任何基於多數節點的決策過程。這就是通常所說的女巫攻擊(Sybil Attacks)。有幾種可能的方式可使女巫攻擊代價高昂或難以進行。例如,通過要求節點存入相當多的金錢(或代幣)作為抵押,或要求他們執行一些計算密集型任務如PoW。

為了保證Zilliqa網絡的安全性,我們要求所有加入Zilliqa的節點都必須做PoW。與此同時,我們也知道,計算密集型的PoW需要大量的時間進行計算並且可能減慢共識協議,而且消耗能源較高。所以,在Zilliqa上,PoW是在更大的間隔上運行的,即所有節點在加入網絡以及每隔一段時間做一次PoW。在其餘時間,為了達成共識,Zilliqa用的是pBFT公式機制。

Odaily:大家常說,PBFT共識協議一般在更小的共識組中實現,比如少於50個節點時,所以它更適用於聯盟鏈。 Zilliqa怎麼覺得這個問題?

賈瑤琪:我們剛剛提到,Zilliqa通過分片技術和PoW保證了網絡的安全性。但是PoW耗時長、確認慢、耗能大等弱點。所以,Zilliqa選擇了pBFT來做共識,主要考慮是:1.它不是計算資源密集型的,比PoW耗能少;2.效率更高,因為它可以利用一個小的共識組;3.它不需要反复確認,賦予了交易最終性。換句話說,不像基於PoW的中本聰共識機制,通常需要多個確認區塊如比特幣需要至少6個確認,pBFT由於它的共識協議確保不會發生臨時分叉,所以不需要確認。

在很多人的觀念中,pBFT主要用於聯盟鏈的一個很大原因是,pBFT共識中節點之間通訊成本高昂。比如,在n個節點的網絡中,使用pBFT達成共識需要的總通訊次數為n(n-1)/2,即n的二次方級,當節點數量超過50的時候這就是一個很大的數字了,且n越大通訊成本上升速度越快。為了解決這個問題,Zilliqa採用了多重簽名算法和一些其他性能優化方法,減少pBFT花費的通訊成本。

二、分片技術的難點和落地情況

Odaily:你認為分片在實踐過程中可能有哪些需要解決的問題,或者難點?

賈瑤琪:分片技術原理聽起來很簡單,但在實際落地過程中要注意以下幾個關鍵問題:

1、對女巫攻擊的防禦。這個問題上邊已經提到了,即使用PoW來預防,在這裡我就不過多贅述。

2、創建分片、給分片分配節點和任務。3、分片大小。

3、分片大小。4、跨片交易。

4、跨片交易。區塊鏈領域的技術專家和工程師們普遍認為,因為跨片交易需要鎖協議,因此其開銷成本很高,當跨片交易數量上升時,會影響整個網絡的吞吐量和經濟效益。

我們目前主要通過兩方面來應對這個問題:一方面,在分片設計之初就盡量避免跨片交易的產生;另一方面,我們在最開始的Zilliqa分片論文中也提到了atomic commit protocol技術方案,這也是我們這幾年來在研究的方向之一。除此之外我們還在研究了多個其他備選方案,我們將在實現相對優秀的方案以後,將細節分享給大家。

Odaily:目前有不少區塊鏈項目也在考慮使用分片技術,你認為分片技術在行業內的落地情況如何?

賈瑤琪:如今分片技術“遍地開花”,這顯示出分片技術已經越來越成為解決區塊鏈擴容的一種主流技術。另一方面,隨著分片技術聲音的不斷提高,越來越多的社區成員也開始關注和支持分片技術。

不得不說的是,分片技術確實是一項非常難的技術,這也是為什麼目前市場上宣稱做分片的項目多,但真正做出來的少的根本原因。究其原因,就是分片技術對安全性要求極高。我認為目前這個市場上還是有一定亂象:

一是陷入TPS競爭陷阱,忽視了最重要的安全性。大家都知道,去年淘寶雙十一交易的TPS峰值是25.6萬/秒,這是發展了這麼多年的中心化系統的處理速度。區塊鍊是一個新興技術,發展程度遠不如中心化系統成熟先進,目前熟知的比特和以太的TPS都不超過30。因此很多項目在現階段宣稱鏈上數十萬、百萬甚至千萬TPS,主要是為了吸引了大眾眼球,但卻忽視了去中心化和安全性這些根本要素。

二是沒有數學運算或發表的論文支撐,前提和論斷草率不嚴謹。分片又被稱為“分而治之”,其重點不僅在於“分”,更在於“治”,即在切分的同時保證安全性。分片技術在傳統領域由來已久,但在區塊鏈中卻是新興技術,兩者在概念上有些相似,但在操作上卻截然不同。因此,如果對區塊鏈的分片技術想當然,認為在每個分片裡放置幾個節點就算處理完成,那麼在實際上卻會導致惡意節點輕易地通過雙花交易等惡意操作而帶來一系列漏洞,而係統後期很難驗證或者回滾來減少這些惡意交易帶來的問題。

三是在沒有經過大規模測試的情況下就輕易下結論,不夠專業。當計算機帶寬不是限制條件時,以太坊使用一個節點或很少的節點也能跑出成千上萬甚至百萬TPS四是一些方式可能不算真正的分片。

四是一些方式可能不算真正的分片。目前,分片確實是一個非常熱點的話題,我個人認為一些項目真正在做的更像是子鏈、狀態通道、或者分層而不是分片。

如果沒有經過科學的數學計算或者已發表的論文支撐,想當然地處理分片,並錯誤地把在理想狀態下少量節點跑出的數據當做主網實現的數據,可能會帶來一些嚴重的安全後果。相對較輕的情況是,網絡多次硬分叉,嚴重則會給投資者帶來巨大損失,這對投資者個人還是區塊鏈自身的發展都是十分不幸的。

Odaily:目前聲稱自己使用了分片的項目不少,你認為剛剛提到的子鏈、側鏈以及狀態通道的解決方案,跟分片有什麼不同?

賈瑤琪:子鏈、側鏈以及狀態通道都屬於鏈下擴容,我認為其核心思路是相似的,即每個鏈可以獨立自主地處理交易或者事物,相互之間不需要交流,最終把結算信息放在主鏈上。打個簡單的比方,在這些鏈中A鏈可以做廣告、B鏈做遊戲、C鏈做交易等。他們跟分片最本質的區別是,分片是鏈上擴容,是對整個區塊鍊網絡的一個重構,節點也是相互關聯的。

我認為鏈下擴容和鏈上擴容是互不衝突的,反而是相互補充的,未來可以相互結合的,因為相互之間的應用範圍和側重點不同,都為區塊鏈擴展提供了重要技術支撐。

Odaily:換言之,分片必須是對同一主鏈中的節點或交易做分片。既然是在同一主鏈,必然當中的節點都參與共識或者驗證全網交易。那麼,Zilliqa如何保證所有節點在參與自身分片共識的同時,也參與確認或驗證全網的交易記錄?

賈瑤琪:我們有一個單獨的分片即DS委員會去整合每個分片的結果,收集不同分片裡面交易哈希,進行一個共識協議,形成哈希的哈希,然後廣播,其他節點驗證簽名。我們的交易確認是分幾個階段的,如果你的交易在單獨一個分片裡面進行確認,那麼你的交易就有很高的概率被寫入區塊鏈,這樣的話我們之後會做一個提示,告知交易已經初步確認,如果最終確認下來的話會再給你發一個通知,就是最終確認了。

另外,我想要提及的是,因為我們目前做的不是狀態分片,所以有些人可能會產生Zilliqa網絡中每個節點都是全節點的誤解,誤以為這會導致過一段時間信息存儲會爆炸。但實際上,Zilliqa網絡中每個節點要保存的是全網的最新狀態,而不是所有交易的歷史。當然,節點也可以自發去作為一個全節點,存儲所有的這樣一個歷史。這樣的全節點有一個好處,就是可以去做自己的服務,例如像EtherScan,提供一個區塊瀏覽器,通過廣告來賺錢。況且,即便未來把狀態切成裝在不同的分片,那麼也是常量級別存儲量減少,其實差別沒那麼大。與此同時,我們已經和Bluzelle、Genaro兩個做去中心化存儲的企業和項目合作,來支持智能合約去中心化的存儲。

Odaily:每一個節點它都要同步最新的狀態,未來隨著節點數量增加,這會影響整個網絡的確認速度嗎?

賈瑤琪:在理論上,Zilliqa吞吐量隨著節點數量增加而增加。但在實際上,節點數量存在一個最佳點,規模增大到這個點之前,吞吐量都是線性增長的。

舉個例子,如果兩萬個節點就帶來了帶寬限制,從而導致了系統吞吐量已經無法再增加,那麼整個網絡可能就會限制在兩萬個節點這樣的情況。根據最新公佈的數據,以太坊目前有16000個節點,而我們仍然在通過實驗獲知這個最佳點。

Odaily:Zilliqa最新測試網絡的TPS是多少?

賈瑤琪:我們這個數據在不斷更新。在已公佈出的數據中,我們使用1400個節點、6個分片,跑出了大約2800TPS的數據。理想狀態下每個分片是600個節點,我們目前選擇用每個分片200個節點做測試主要是考慮到成本,因為我們目前租用的節點是AWS、EC2,每年需要上百萬美元的費用做測試。

Odaily:Zilliqa在智能合約方面有什麼規劃,主網上線時會有智能合約系統嗎?另外有觀點認為,Zilliqa的智能合約語言Scilla不是圖靈完備的,為什麼?

論文

論文論文來論證。 Scilla是一種攜帶證明的、中間的智能合約語言,其基礎計算模型基於通信自動機。我們希望通過使用Scilla,在區塊鏈平台上編寫智能合約更加便捷簡單、安全可靠、擁有更高性能。

這幾年的DAO攻擊和Parity漏洞等都造成了數額巨大的資金被盜和凍結,一個很重要的原因就是Solidity沒有形式化驗證,在溝通和計算上劃分不夠清晰。而Scilla為智能合約的通信和操作提供了多種分離層,是支持形式化驗證的,通過使用COQ等證明助理,可以使開發者寫的代碼符合其想要的邏輯。

Scilla非圖靈完備更多的考慮是智能合約的安全性。以太坊的智能合約語言Solidity雖然圖靈完備,但是因為燃料費的存在,實際部署的智能合約是無法無限循環的,所以也做不到圖靈完備。我們發現以太坊上的智能合約有成千上萬個的漏洞。 Scilla就是為了避免已有的智能合約中的漏洞,所以去掉了一些比較危險的API接口和功能;而且我們發現目前所有智能合約不太需要圖靈完備。

我們目前正在開發Scilla語言的編譯器,目的是使未來所有用Solidity編寫的合約都可以通過編譯器輕鬆轉移到Scilla上。與此同時,我們也發布了Zilliqa生態構建資助計劃,花費500萬美元,資助為Zilliqa搭建工具和應用的優秀項目、團隊和個人,也建設Zilliqa生態。

三、國內區塊鏈行業的三大問題

Odaily:你目前在市場上有比較看好和關注的公鏈嗎?

賈瑤琪:市場上的項目各有亮點和特色,我個人更喜歡的還是以太坊。

Odaily:如果不是這麼成熟和主流的呢?可能是一些創業團隊做的。

賈瑤琪:對於項目標準,我個人比較看重創新性和嚴謹性。嚴謹性指的就是要有已發表的學術論文驗證,在理論上能通過。如果沒有嚴謹的論文來證明,系統最起碼要有一千個節點以上的測試網絡,代碼也是公開的,這樣才會比較有說服力。

Odaily:從整體行業上來說,你認為目前國內外區塊鏈領域,或說公鏈項目最大的問題是什麼?

我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。

我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。

我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。

卢晓明
作者文库