解碼分片技術的現狀與未來

解碼分片技術的現狀與未來

去中心化、安全和可拓展性無法同時滿足,被稱為區塊鏈的不可能三角。這一結論難以通過數學證明的方式驗證,也一直被眾多項目質疑和挑戰。開發者們提出了分片、DAG、狀態通道、側鏈/跨鏈等多種Layer 1和Layer 2的擴容方案。分片技術在不降低去中心化程度的情況下提升了可拓展性,具有良好的應用前景。

近期多個公鏈項目如Ontology 等宣佈了自己分片技術方案,一些知名分片公鏈如QuarkChain 等宣佈將於近期主網上線,引發市場對於分片技術的關注。TokenInsight邀請了QuarkChain、MultiVAC、Alephium、Ontology、Top Network 等採用分片技術的公鏈項目一起討論分片技術的現狀與未來。

同時,《對話首席》也歡迎交易所、錢包、礦池等區塊鏈各領域首席,參與到我們的活動中來,共同為行業的發展建言獻策。詳情可聯繫TokenInsight首席溝通官維維:tokeninsight_data。

本次直播活動持續2個半小時,嘉賓分享的內容密集而精深,因此特分為上下兩輯,以饗讀者。

以下為【對話首席】文字整理版(上):

/ 第一環節:媒體觀察團提問/

火星財經:傳統世界我們用的很多互聯網服務都是基於分片技術的,您覺得區塊鏈系統的分片技術與傳統的中心化服務器採用的分片技術有哪些不同呢?

QuarkChain CEO 週期:感謝陸老師的問題,我以前在谷歌、Facebook專門做分佈式系統,用到各種分片技術。所以對分片技術,尤其在中心化的系統裡面與區塊鏈的分片技術的區別還是深有體會的。那麼我覺得主要三個方面,第一方面是代幣經濟學和去中心化。第二方面是安全,第三個就是其他的硬件方面和網絡的假設。

首先說一下去中心化的代幣經濟學。區塊鏈裡面有一個非常偉大的發明,就是引入了這個代幣經濟學的機制。那麼,通過引入代幣經濟學,使得大家在沒有信任,以及每一個個體都是為了自己最大利益的情況下,能達到一個共同繁榮的局面。包括安全性的獲得,還有賬本的交易能夠順利執行。

在這一方面與傳統的中心化系統是有非常大的區別的,因為所有的節點都是基於制信的節點,它們之間的互相的通信,還有它們之間的整個配置部署,都是以中心化、互相制信的方式來實現的。那麼這樣的話,在區塊鏈系統中的分片技術,相比於中心化系統的分片技術,尤其是代幣經濟學裡的設計,會有非常大的不同。

舉個例子來說,在分片設計裡面一個很重要的設計叫做跨片設計。在中心化服務器裡的跨片設計,很多時候可以通過中心化的鎖服務、Messaging、Passing、Message Que的方式來實現。但是在區塊鏈系統裡面,第一個,我們這種跨片交易怎麼能夠通過比如代幣經濟學的方式,能夠保證這些跨片交易的安全性、原子性等各方面。所以在這方面,整體的設計和實現的思路會跟中心化的服務器使用的分片技術有很大的區別。

那麼第二就是安全假設,現在的區塊鏈系統都是指公鏈系統,所有人都能夠去訪問,並且有可能會遭受攻擊的。而傳統中心化服務器的分片技術,大部分情況下,用戶是不能直接去訪問運行這些分片技術的服務器的。而且經常是有好幾層的防火牆,還有各種各樣的安全配置,然後去訪問這個運行分片技術的服務器。所以對安全的要求,那麼區塊鏈尤其是公鏈系統的分片技術的安全要求,會遠遠高於使用傳統中心化服務器分片技術的安全要求。

第三個,就是對其他的一些硬件環境還有網絡環境假設。像中心化的服務器,基本上所有運行的分片的技術節點,都是運行在中心化控制數據中心裡面。那麼它們可以通過Quality of Service 方式,去讓整個網絡會小延時、高吞吐的方式進行通信。這種條件下,他們可以把這個整個網絡建構成為一個趨向於同步的網絡系統。

但是區塊鏈系統是基於整個互聯網的大網絡系統。那麼在這裡面我們可以預料到會遇到很多網絡問題,比如斷網、被(D)DOS攻擊。斷網其實是對網絡的同步和異步的假設,互聯網本身是可以認為是一個大的異步的網絡系統。

從這幾個維度來說,區塊鏈系統對分片技術的要求會比中心化系統的更高,因為它會遇到更嚴峻的安全假設以及更差的網絡環境。所以在區塊鏈系統設計的分片技術,會要比傳統的中心化服務器採用的分片技術難很多。

鏈聞:MultiVAC的分片方案怎麼保證安全性和去中心化?實現了交易分片,存儲和傳輸是否成為瓶頸?

MultiVAC CTO 應翔:這是一個關鍵性的問題。我先說安全性,分片的技術方案關鍵挑戰在於單個分片的安全性是否會比全網更弱,這是核心問題。那麼它的關鍵就在於我們能否去動態調整分片,或者調整礦工,或者調整分片的從屬關係。通俗解釋一下,就是假如說我的交易總在這個分片上,然後服務於這個分配的人也永遠是那幾個礦工,那麼這個分片一定是脆弱的,久而久之我就可以跟這些礦工去串通了。畢竟分片內的礦工數還是少,我勾結他們比勾結全網礦工要容易的多。

那麼MultiVAC的方案就是使用了VRF(TokenInsight 注:Verifiable Random Function,可驗證隨機函數)動態重分片的方案,具體就是兩個點,第一,隨機分配;第二,動態調整。隨機分配比較好理解,就是並不是你想去當哪個分片的礦工你就可以去,你必須使用VRF的方式去用數學的辦法來隨機地選擇。所以你沒法跟別人說,我們十個人一起去某個分片。那麼第二個,就是MultiVAC的一個首創,也是非常關鍵的一點,就是動態調整。就是我服務於這個分片的礦工,並不永遠是這波人,我可能幾分鐘到十幾分鍾就換人。那麼這個就保證了,哪怕你想串通都來不及。這是一個很關鍵的點,那麼我們是怎麼做到讓礦工可以輕易在幾個分片之間來回切換的呢。

礦工可以在幾個分片之間來回切換,是我們動態調整的一個關鍵點。我們的解決方案是一個成體系的、同時也解決去中心化的這個問題。

我們說一下去中心化,我認為如果要真正做到去中心化,第一,我們要少用PoW,因為現在的PoW基本上都是礦池來把控了,普通人很少能自己弄礦機在家挖礦的。而且現在社會都是吃過豬肉的人多,見過豬跑的人反而少了,我想在座的各位大多可能都是用過幣,或者買過幣,但真正挖挖出來過比特幣的人,我估計很少很少。

第二,我們一定要降低礦工的准入門檻,把權力下放。現在很多的技術方案,一遇到瓶頸、困難,他就設置一個超級節點去處理問題,或者設置一個上層的根鏈、上層的委員會,或者上層的這種信標鏈去解決問題。但是我認為區塊鏈的未來應該是爭取權力分散,而不是權力集中。

MultiVAC的有一個很大的創新,我們設計了一個基於Merkle Tree的交互式控制數據庫,我們把數據的控制權和存儲分離,也就是說,在我們的系統有存儲節點和礦工兩種角色,怎麼曠工呢,他擁有完整的控制權,但他卻不需要全賬本,他只要有很輕量級的數據啊,幾百個字節都不到1KB的數據,它就可以出塊,可以投票,可以驗證交易,可以更新賬本。

存儲節點,就跟電信、聯通或者美國的AT&T這樣的運營商一樣,他們只提供最基礎的基礎設施服務,他不能對你的數據有任何的控制權,就象電信給你拉個寬帶,你來決定寬帶上跑的數據是什麼,它控制不了。我們是在數學上保證了存儲節點,無法對數據進行任何的增刪改操作,而不僅僅是靠經濟模型來制衡。

然後因為礦工不需要全賬本,只要有很輕量級的數據。所以礦工在各個分片之間的切換也就變得非常的方便,就幾百個字節的事情。所以你可以來去如風,這會兒在這個分片當礦工,下一刻就去了另外一個分片當礦工。也就是像我們剛才說的這個動態重分片的功能,同時也保證了分片的安全性。

因為MultiVAC的礦工門檻很低,低到什麼程度呢,目前來看是擁有一個雙核的CPU、4GB的內存,你就可以成為礦工了。現在我們還在進一步優化我們的代碼,甚至未來你有1GB的內存,就足夠作為一個礦工,那麼,到時候你開著電腦挖礦都不會影響你正常辦公。那這樣的門檻意味著任何一個人都可以成為礦工,這樣就可以吸引到很多人來加入我們這個網絡。我們的MultiVAC的系統的控制權又完全是掌握在普通礦工手裡,所以它是一個真正去中心化的一個分片技術。我們預計在第二季度(五月份左右)會放出我們的普通節點,即可以參與挖礦的客戶端,到時候大家每個人都可以參與並加入我們。

存儲和傳輸方面,MultiVAC是第一個提出計算、存儲、傳輸全維度分片的技術方案,詳細的技術細節在我們的黃皮書裡面大家可以在我們官網上看到,我們的黃皮書是非常嚴謹的,具體技術細節我可能沒有時間來充分的解釋。但是我可以放一個結論。

這個結論就是,MultiVAC是真正做到每一個分片內的計算、存儲、傳輸的業務量,都正比於本分片的TPS的業務量,他跟全網的總業務量無關。舉個例子就是,如果全網有20個分片。每個分片500個TPS,那一共就是1萬個TPS,但是在MultiVAC裡面,每個分片處理的傳輸量跟500個TPS差不多;存儲量,只有存儲節點,它也是差不多500個TPS;它的計算量也是那麼多。不需要去關心全網有多少的業務量,然後真正實現從水平擴展可以無限增加分片,然後我們的門檻很低,所以加入的礦工就很多;然後我們支持水平擴展,所以會有更多的礦工加入,就會有更多的分片,就會有更強的TPS性能,就會有更多的生態接在上面。

碳鏈價值:Alephium的分片技術有哪些創新,分片技術與DAG這兩種鏈上擴容技術的結合將帶來哪些優勢呢?

Alephium CEO 王成:我們的分片技術跟現有的方法有很大不同,我們的分片分為兩步,第一步是把賬戶地址分成G個組,第二步是交易分片,我們的交易是採用UTXO模型,我們根據交易的輸入和輸出屬於哪個用戶組,來把交易分成G*G個組。舉個簡單的例子來說明一下:假設我們將用戶分成三個組A B C,那麼就可以根據交易的輸入和輸出將交易分成九類(A到A,A到B等等),對於每類交易,我們單獨建一條區塊鏈來進行交易確認。

這種分片方法帶來幾個好處,我們說兩個最重要的。首先是跨分片交易特別快,如果要從A轉賬給B,我們直接把這筆交易放到對應的鏈上即可,而現有的其他分片項目都需要採用類似於two-phase commit的方法。第二個好處就是可擴展性,賬戶組A不需要下載賬戶組B,C之間的交易,相當於把總帳本拆分成多個分片賬本,每個賬戶組只需要處理相應的分片賬本。

相比於單鏈,分片技術會給一致性和安全性帶來挑戰。我們通過引入DAG技術到我們的區塊流算法裡,通過精巧的數據結構來維護分片之間以及區塊之間的依賴關係,這些關係形成一個DAG(有向無環圖)。區塊流算法能保證礦工不斷的添加新的區塊到DAG上,再通過finality算法產生共識。同時,由於這些依賴關係,分片的安全性能相互累加,攻擊者攻擊一個分片裡的區塊,必然需要攻擊其他分片依賴此分片的區塊,從而提高了分片的安全性。

我覺得DAG結合分片將會成為未來的趨勢,這一點大家可以參考計算模型的進化過程。計算模型從序列計算到併發計算,再到分佈式計算,分佈式系統裡單個節點裡採用的是併發計算模型。類似的,區塊鏈從單鏈發展到DAG,現在擴容如果結合分片和DAG,就非常類比計算模型的演化。從這個角度,我覺得我們走的是一條非常正確的技術路線。

鏈得得:Ontology於2018年發佈了分片設計方案,請問您為何在眾多擴容方案中選擇了分片技術?分片技術對Ontology的價值是什麼?未來分片方案如何與現有系統結合並落地?

Ontology (本體)資深架構專家 叢宏雷:謝謝常老師的問題,在去年六月份Ontology主網上線之後,我們就開始了2.0的研發,2.0的一個目標就是解決2B應用的需求,也就是讓區塊鏈在2B的方向能夠落地。

當時,Layer 2的技術才剛開始,我們也研究了很多的Layer 2的技術,將Plasma等。然後我們發現要做真正好的安全的可擴展性很難。因為在Layer 2上是採用了法庭的假設,然後通過Challenge的方式,做重放進行狀態證明。因為區塊鏈是一個數字化的世界,和現實世界有比較大的區別,這樣很難真正實現安全的可擴展。

因此我們發現是隻有通過在Base layer的Sharding技術,才能實現區塊鏈的安全可擴展。然後雖然大家認為這個分片技術很難,但是實際上要真正做安全可用的Layer 2,真正Practical(可實現的)技術,我們認為需要更多的密碼學技術才能實現,這個好像是更難。但是分片,基本上源自這個十幾年前的一個歷史。

數據庫技術經過十幾年的發展,理論研究很成熟,所以在我們這個分片的設計上有了很足夠的理論支撐,所以我們選擇了Sharding的方式來做擴展。

第二個問題是,未來分片的方案,怎麼和現有的系統相結合,這個實際上是在我們本體一開始設計的時候,本體的設計是一個可延續的設計,因為大家都瞭解區塊鏈是一個自激勵的系統,它的設計目標是就是保持去中心化的運行,這是區塊鏈的系統和所有其他系統不同的地方,也是區塊鏈系統設計的魅力所在,所以說在Ontology的設計最開始的時候,我們對系統的演化作了充分的考慮。

在Ontology裡面,很多核心的功能都是採用系統智能合約的方式來實現的,我們的分片的設計,也是基於智能合約方式的分片。也就是對智能合約業務做分片,而不是做Token Transfer式的分片。所以說是我們新的分片的設計和實現,都主要是通過增加新的系統合約的方式來實現分片。包括這個分片的治理,分片的激勵模型,這些都是通過系統合約來實現。另外就是分片中間最難的那個原子事務方面,我們也是通過系統合約的方式來實現。

因此,對於我們這個Ontology分片的升級,在我們開發、測試、審計都做完之後,根據需要直接通過系統活躍部署升級的方式,直接就可以無縫完成Ontology分片的升級。

Block :TOP Network採用了雙層分片的機制,請問是基於什麼樣的考慮呢?Zone 和Shard 的劃分標準是怎麼樣的?

TOP Network Co-founder&CTO Taylor Wei :謝謝David的問題。從TOP Network採用雙層分片的機制,其實際的原因來自於我們不得不這麼做。因為從分佈式的計算機理論上來看,分片來解決吞吐量和性能的,那帶來問題必然是有限的節點在執行局部傳輸和局部存儲等職能。那對公司的安全,網絡安全和數據可用性都將是極大的挑戰,而傳統用一層分片來解決這個問題,這一工程上和產品實現上,難度極大,不具有可操作性。

具體來說,TOP Network採用兩層分片是考慮到五個因素:第一,兩層分面的設計,一層進行交易共識,另外一層進行審計,相互制約和兩層分立,即使下層全被攻陷了,還能保證系統的安全;第二,兩層網絡能相互保護,大大增強了網絡層面的抗攻擊能力;第三,數據可用性得到增強,我們說兩層分片可以對數據逐層進行壓縮備份,理論上,下面一層存在數據全部被破壞的可能性,這就需要另外一層能夠保證異常情況下能cover回來;第四,Shard競爭load(分片內的交易處理壓力)肯定是不平衡的,有非常繁忙的,非常閒的Shard,那地保證安全前提下需要能量值。最後,跨下的交易和流量。我們兩層分片之後可以更有序地分流,傳播效率大大增加。

為了解決這些問題,我們TOP Network是業界第一個採用基於點陣DAG實現全狀態分片的公有鏈,必須結合兩層點陣技術來闡述。那我們採用的DAG叫點陣DAG,不同於傳統混沌結構的DAG,點陣DAG在數學上具有非常有序一致的,可以很好的保證了交易的確定性和有序性。帶來三大好處:

第一,大大增強分片共識的安全性,因為點陣DAG本質上可以理解為每個賬號都有條迷你鏈,這個賬號的交易在迷你鏈進行共識。然後Shard這一級對賬號進行打包共識,Shard block。這相當於兩層共識相互保駕護航。

第二,點陣DAG在數學上具有非常有序一致,所以非常適合狀態分片,可以用來管理整個鏈的數據,對交易和狀態分配的劃分是非常確定有序的,每個Shard相當於一批點陣構建的空間。

第三,Cross-Shard的交易系統非常清晰直觀,支撐好了跨下的數據同步,才能支撐起各個節點的Shard不斷輪換,允許節點快速進入和離開,才能對分片的安全性有很大幫助。

據前面點陣DAG的應用,在這個基礎上面,我們開發了兩層分片,具體來說,這兩層分片是由Zone和Shard兩層組成的,Shard這一層實現賬號級別的狀態,做的是交易共識,解決跨片交易限制或者賬號級別的併發擴展、水平發展。而Zone一級更多人實現block級別的狀態分片,對完成對管轄下的交易共識審計的同時,對跨下的數據進行同步。

第二個問題,Shard和Zone的劃分標準是什麼,簡單說從業務上面來看,Zone是做審計的,Shard做交易共識;從網絡角度去解構,Zone是做路由和同步的,Shard是獨立分割的交易子網絡;那從節點組成上來區分,Zone是由高級節點組成的集群構建,Shard是由共識節點組成的子集。

/ 第二環節:圓桌會議一/

鏈聞:眾所周知,分片技術的技術實現難度非常大。請問您的項目目前進展如何,曾經在分片技術開發上遇到過哪些問題?

QuarkChain:的確在分片的實現上面,難度很大。分片本身在中心化系統裡面難度也是非常大的,大家可以看看比如谷歌,他們都是花了一兩年的時間,再加上非常多,五六十至一百人的團隊,才能夠去實現一個他們內部的中心化的分片系統。那麼因為這些經驗,我們在開發過程中就受益於此,吸取了很多經驗和教訓,所以在我們開發過程中能夠很好在早期去避免一些問題。

但是在其他方面,尤其是區塊鏈相關的分片還是遇到很多問題。第一個問題就是我們當時在設計跨片交易的時候,尤其是處理一個叫做熱分片問題時,我們花了很多時間和精力,涉及包括代幣經濟學和各方面機制,去保證能夠很好的解決這個問題。這個問題其實就是說,假設,很多分片都向某一個分片發送大量的跨片交易,怎麼能夠保證目標的分片不被這些大量的交易給攻擊。

舉個例子,像扎克伯格發個博客,然後很多人在上面點贊,寫評論,那麼系統會把這些點讚的消息區分發給比如說你的好友,或者朋友圈分組。剛好這個話題是非常非常火的,同時這個博客分到了某一個單獨的分片裡,那麼可能會造成一下子這個分片就過載,並且導致所有處理服務器都崩潰的情況。

像這樣的問題,我們在中心化系統有非常多這種問題出現,然後解決的方法也有各種各樣的。但是怎麼樣能夠找到一個非常適合區塊鏈這種去中心化的方式運行,並且能夠解決這個問題的方案,我們也嘗試了很多。最後,我們找到了一個我們認為,不管是在安全角度還是在代幣經濟學角度都是可行的。

那麼第二個方面,就是在安全審計尤其是安全的設計方面,我們也遇到了新的一些問題。我們在整個的分片設計過程中,邀請了四到五個來自不同專業的安全公司,對我們源代碼做了安全審計。然後很多之前我們的經驗,比如說比特幣和以太坊,不管是他們的黑名單或者抗女巫攻擊或者是其他攻擊的一些方案,在分片上面確實會產生一些新的攻擊維度。

那麼我們不像很多其他的項目,他們直接使用已有的比如比特幣和以太坊的一些代碼。然後去做安全審計的時候要做一個增量審計就行了。那麼對我們而言,對於整個的分片技術,在做的不管是安全審計,還是新的一個攻擊向量預防等各方面,其實也會有相當多的挑戰。

那麼第三個的話,除了開發之外,其實任何一套成熟的系統,不只是一個生產代碼,還有需要相應的調試和測試的代碼

在中心化系統裡面,尤其是像這種大公司,他們有非常成熟的調試和測試工具,去監視這個節點的運行,還有去運行一個小的環境來做一個小的樣本。但是在區塊鏈行業裡面,我們就是發現這方面的一些工具還是非常缺乏,那麼出現了很多一些問題都需要人工手動的去分析。然後解決思路的話,我認為也是比較野蠻和暴力的。

不過我也覺得就是這些都是一個新技術在新領域裡很正常的應用問題。所以我們也希望我們能夠在不只是說分片的區塊鏈技術,還有包括安全、調試、測試工具方面,還有其它一些代幣經濟學設計方面,都希望能夠做出一些貢獻。

MultiVAC:好的,謝謝主持人。也謝謝剛才周老闆的分享。其實周老闆的觀點跟我們這邊兒還是很接近的,就是包括共識跨片、安全審計,測試、經濟設計等等,很多問題,其實我們也遇到了。那我就不重複講那些東西了,確實大家做的東西比較接近,那麼我們面臨的困難可能也是相似的。說起來,做分片這個事情,學術和工程兩方面難度都不小。我們這邊現在主要是靠我們有最頂級的團隊來做這個事情。我們有七八個Google的工程師,有Facebook的架構師,然後還有哈佛,斯坦福的博士。

相比來說,設計應該說是最難的,怎麼去架構下一代合理的系統。不過好在我們最難的設計階段已經過去了。然後目前我們基本已經設計清楚,剩下的就是工程推進的問題。之前我們也很難招到頂級的工程師,主要是因為行業以內溢價太高,騙子也多,不靠譜的人太多。經歷了這一波熊市大洗牌,我們趁機招了一波人,還是蠻開心的,潮水退去才知道誰在裸泳。

要說困難,我覺得最大的困難應該是行業太浮躁,行業的普遍認知和我們的認知不一致。要麼就是喊著三個月測試網,六個月上主網怎麼之類的。你要這麼說,我fork一下以太坊源碼三天就有一個主網,怎麼說呢,有一點劣幣驅逐良幣的這種感覺吧。只要做一個技術創新的項目,它需要的時間資源是遠超大家預期的。還有要麼就是行業的人會問我們,說這個功能有沒有,那個功能有沒有。但是我認為真正劃時代的技術突破,應該學會去捨棄。如果一個項目號稱自己有DAG,有分片、大數據、人工智能、虛擬現實,還有區塊鏈,往往它是能唬住人的,但往往也最不靠譜。

技術的突破,本質是一件苦行僧一樣的事情。但區塊鏈行業恰恰是一個極為浮躁,極為拜金的行業。我可以不賺錢,我就追求技術上的突破,我就實現一個內心的夢想,但是你能不能找到志同道合的人,跟你沉下心來,一起做。這個行業的浮躁氛圍,願不願等待你去做出來,這些才是問題。

Alephium:首先講一下我們項目的進展吧。我們其實從今年年初開始就已經在內部開發我們項目代碼,我們項目比較特殊,我們是先有代碼、alpha版本,然後我們再完善的白皮書。我個人是做技術出身的,所以我特別希望我有一個完整的PLC,能夠證明我的算法是work的時候才希望把他推出來。目前我們已經把我們的alpha版本做好了,然後實現了白皮書裡面的核心算法,並且在亞馬遜雲上測試過我們的算法。所以從項目真正公佈的時候,我們就知道我們肯定可以實現我們白皮書裡面承諾的東西。

然後第二個說一下,開發分片技術難度。分片技術肯定是比單鏈要難很多的,然後我們在分片上又是比較新穎的,所以很多東西需要自己摸索。總體而言,開發分片技術其實跟分佈式系統挺像的,還是有很多可以借鑑的地方。首先最大的挑戰就是來自於架構方面的挑戰,就剛才大家也都提到了。因為分片的時候沒有考慮更多的資源調度方面的事情,還有非常多的併發場景。如果大家寫過大型的分佈式系統的話,就知道分片場景處理起來,資源共享、資源競爭的時候就非常的麻煩,同時因為這個線程比較多,測試起來也是非常的麻煩。

然後對於我們項目而言,我和我的瑞士同事,他是原來是很有名的一個創業公司的CTO。我們都有豐富的分佈式系統開發經驗,我們用一些比較先進的軟件和工程技術,包括函數式語言等,然後裡面一些比較好的自動測試的基礎技術。相對而言,就是把我們的架構設計的比較合理,測試覆蓋面也比較廣。目前,我們系統在亞馬遜雲上跑起來測試是比較穩定的。但區塊鏈行業對安全性要求極其高,所以,長遠來看我們還有很多的事情要做。也希望有更多的高級程序員加入我們,一起幫助我們推進這個事情。

Ontology :好的,接下來我介紹一下本體sharding開發的一些問題。這個實際上是和前面各位介紹的差不多,主要也都是設計方面還有開發測試方面的一些難度。

首先說,設計方面難度,sharding實際是來自十幾年前列式數據庫的理論在區塊鏈領域的應用。所以,如何把sharding的理論和區塊鏈的安全理論,包括密碼經濟學設計、激勵機制設計,這些融合在一起來實現一個安全可擴展,而且高性能的這樣一個區塊鏈。這是在我們整個sharding的設計中最難的地方。

目前,我們算是完成了Ontology sharding的設計,現在在穩步開發。在我們的設計的過程中,我們是採用和其他以往的一些設計方不同的,就是我們採用這個CBC的方法學設計。CBC,Correct By Construction,是以太坊的Casper提出來的一個新的一種設計方法學。

對於CBC,他實際上就是從終點出發,來確定整個系統設計的一個邊界。然後從終點一步步朝回走,就一步步保證在你整個設計都在邊界之內的方式,然後反推出來一個可行的設計。就類似於“條條大路通羅馬”,現在我們怎麼找一條我到羅馬的路呢,就是從羅馬出發,找一條回家的路,然後用這條路來做我們的設計,這樣就可以從家裡面直接到羅馬。

在整個過程中,我們遇到的最難的問題,實際上是智能合約sharding設計中的一個跨鏈事物的一致性的問題,當然,這個在列式數據庫設計裡面也是一個難點,在區塊鏈場景下就是變得更難一些,尤其設計容易實現更難,這也是我們當時最大的挑戰。不過,好在現在列式數據庫有很多理論成果。如果遇到什麼問題,那些理論成果,就已經給我們指明瞭設計的邊界在哪裡。所以說也就給我們指明瞭,設計的方向在哪裡。

目前我們是通過可驗證消息隊列的方式來實現垮鏈事物的一致性,就是基於可驗證消息隊列,然後來實現這個一致性的方式,目前這個問題我們還在這個持續優化。另外一點就是工程實現,因為設計再完美,工程實現跟不上也很難,畢竟工程跟設計還是差別很大的。所以說怎麼在工程上來保證測試覆蓋難度,尤其是在分片的場景下。分片是一個更大的網絡,和單鏈的開發會有很大的不同。所以如何保證測試覆蓋的難度,這個也是很難。

最後說一下,目前我們Ontology sharding的開發進度,目前大概是在40%左右。如果在開發完成之後,再加上測試審計的工作,根據目前的進度,有可能今年可以看到上線。但是這個要取決於測試,還有審計以及後面一些重要功能的開發進度。

TOP Network :好的,我分享一下TOP Network的寶貴分片經歷。首先,我們TOP Network內部已經發布了Testnet3.0,我們官網上放的是Testnet2.0。今年第二季度的我們主網會上線,目前進度都挺順利,從技術上來說呢,分片的基礎驗證,其實我很早就完成了,包括兩層分片,兩層點陣,從理論上到設計開發,實現,到時這個測試結果也都是符合我們預期的,我們這去年十月份開通的1.0的時候也實現了8000多TPS的成績,後續對我們主網上線的信任,大家可以有足夠的期待。

但我們從2017年底到2018年,為開發出真正安全可用的分片技術,碰到了非常多的挑戰。這其中絕大多數的挑戰在業界其實沒有現成的解決方案可以參考,其中最麻煩的就是需要系統性的、完整的解決各種分片的異常情況。比如說假設整個shard節點全部下線了,那麼整體的系統還能夠自動恢復嗎,多久能恢復,這個恢復期間,怎麼保證交易的安全性和可用性。

假設整個shard被人攻陷了,那整體系統還能保證公司的安全,畢竟我說分片了,那分片你的節點必定是數還是大大小於全局的。比如單個shard被攻陷的可能性是從理論上是升明顯增加的。所以這種情況理論上雖然說實際上很難發生,但要從系統可靠性的角度,還是要能保證這種異常發生的時候安全,所以這個是一個非常大的一個挑戰。

假設所有的交易全部是跨Zone的交易或者跨Shard的交易,那我們說分片技術還能保持著線性擴展嗎?通常說,很多分片系統的TPS測試,絕大部分在單個分片內完成了,這樣的TPS性能就不符合實際的情況。我們之前測試一個假設實例的交易都是誇Zone的,跨Shard的。這種情況下系統還是需要那個平衡,能夠水平線性擴展。這是我們經歷了很多很多的挑戰。

總的來說呢,純粹的分片技術對實驗室來實現驗證,從我個人的感覺其實不是特別困難。我們團隊,其實很早也就實現了,就是驗證了這些東西。那我們在Testnet 3.0,也就是內部release出來的,最後已經做到了在滿足安全的前提下,分片性能最大化,數據的可用性,抗攻擊和同步的時效性之間達到平衡,而且是動態平衡。那這樣就解決了,我們主管上線前的最後的技術挑戰,所以我們非常也非常有信心,在今年第二季度把我們的主網上線。這個過程當中,我們在工程開發上確實經歷了很多痛苦,才走到了今天。

(作者:TokenIn,內容來自鏈得得內容開放平臺“得得號”;本文僅代表作者觀點,不代表鏈得得官方立場)

相關推薦

推薦中...