1. 程式人生 > >區塊鏈可擴充套件性的那些技術:側鏈、分片、DAG ,子鏈!

區塊鏈可擴充套件性的那些技術:側鏈、分片、DAG ,子鏈!

如果你經常瀏覽區塊鏈相關的資訊,你一定知道比特幣交易開始變得擁堵,在社群中對於是擴容還是側鏈的討論喋喋不休。你肯定也知道就連以太坊也因《CryptoKitties》這款養貓遊戲沒能逃掉網路擁堵的命運。

擺在我們面前的,是區塊鏈技術發展到現在終會遇到的一個關鍵瓶頸——區塊鏈(特別是公鏈)想要真正做到更深度化的應用和普及,關鍵就是要解決交易的吞吐量和交易的速度問題,這在區塊鏈中也被稱作”可擴充套件性“。

幸運的是大多數團隊都很有預見性的提出了相應的解決方案,並已開始付諸實施,只不過作為一名非區塊鏈技術領域的萌新小白,在面對側鏈、閃電網路、RSK、DAG、分片(Sharing)時經常會搞得一頭霧水,不知道是什麼意思,更不知道它們之間是一個什麼樣的關係——今天簡單做了一個梳理,希望大家至少可以從巨集觀上比較清楚的瞭解對於區塊鏈可擴充套件性上的問題,各團隊是在如何解決。

如前邊提到,區塊鏈可擴充套件性的核心是為了解決交易的吞吐量和交易的速度兩個方面,核心指標通常用TPS(transaction per second)來表達,即每秒執行的事務數量。比如比特幣TPS是7,以太坊TPS是30-40等。

從現有技術實現的角度來說,基本分為三種,分別是側鏈、分片、DAG,但因一些實現的技術角度和細節不同,各團隊給出的命名也不一樣。我給出下面這張圖你可能就會有一個比較清晰的概念了:
這裡寫圖片描述

區塊鏈可擴充套件性解決方案

一.側鏈:

側鏈(SideChains)因為最早是這對比特幣提出,所以這個概念後期也更多的是在描述比特幣相關的擴容,它的定義是:可以讓比特幣安全地從比特幣主鏈轉移到其他區塊鏈,又可以從其他區塊鏈安全地返回比特幣主鏈的一種協議。

我們以閃電網路(Lighting Network)為例:它指的是A和B兩人可以把比特幣放到一個多重簽名錢包中鎖定(鏈下),然後進行交易簽名更改雙方各自能取回的比特幣數量。交易參與方可以隨時關閉交易通道,最後一筆經過簽名且包含最新餘額動態的交易最終將會被廣播並寫入比特幣區塊鏈(迴歸鏈上)。

另一種情況是涉及更多的第三方,比如已知C想和A交易,但雙方沒有建立支付通道,不過A和B、B和C都各自建立了支付通道,這時C就可以通過B和A達成交易,B其實在整個交易過程中充當著一個閘道器的角色。整個過程實際上不需要在主鏈確認,因為都是幾方之間倒來倒去的”數字遊戲“,因此交易速度會非常迅速。只有當關閉交易通道時,才會最終確定各自的餘額並寫進主鏈區塊。

RSK其實也是側鏈的框架,你可以理解為閃電網路解決的是比特幣支付問題,而RSK則是通過側鏈為比特幣建立了一套類似以太坊的圖靈完備的智慧合約平臺。:

二.分片

分片(Sharing)其實是一種傳統資料庫的技術,它將大型資料庫分成更小、更快、更容易管理的部分,這些部分叫做資料碎片 (Vitalik Buterin稱它為宇宙Universes) ,不過應用到區塊鏈當中會相當複雜。

以太坊的分片,簡單來說就是將區塊鏈網路劃分成若干能夠處理交易的較小元件式網路,以實現每秒處理數千筆交易的支付系統。

設定一個區塊鏈,在這個區塊鏈系統中有一百個各自不同的宇宙,每一個宇宙都是一個獨立的賬戶空間。使用者可以在某個宇宙中擁有一個賬戶,該使用者發起的交易也只會對交易相關的宇宙產生影響。——Vitalik Buterin在BeyondBlock區塊鏈技術交流大會的演講

……是否似曾相識?聽上去是不是和側鏈很像?

是的,如果說側鏈是通過“外部嫁接”到主鏈,那分片就是將主鏈進行“內部分割”,顯然後者的實現難度要比前者複雜的多!也因此很多人都認為V神把事情複雜了……其具體為何要如此實現V神自有他的道理,不在本文討論,但基本可以確定的是,即使是分片,也會為效率犧牲一定程度的“去中心化”。順帶一提,EOS也有分片,叫Region。

三.DAG

DAG 是有向無環圖(Directed Acyclic Graph)的縮寫,這是一種有頂點和邊的圖結構。它可以保證從一個頂點沿著若干邊前進(有向),但永遠不能回到原點(無環)。

在IOTA這個專案中,提到的Tangle(纏結)就屬於DAG的一種資料結構,真正意義上講,IOTA已不屬於“區塊鏈”,你可以理解為如果比特幣、以太坊使用的是底層資料結構是BlockChain,而IOTA的底層資料結構則是DAG,但它依然屬於“去中心化”的範疇。
這裡寫圖片描述

有向無環圖(Tangle)

在 IOTA 裡發起一筆交易的流程如下:

你需要先找到網路裡的兩筆交易,驗證它們的合法性,然後做微量的POW計算,把自己的交易與它們繫結,再廣播到網路。你的交易會被後來的交易以相同的方式驗證。

如果驗證你交易的其他交易越多,則你的交易的確定性越高。當達到一個臨界值時,就認為這個交易被確定了,這和比特幣6個區塊確定交易狀態的思想一致。簡單來說,IOTA是把算力作為交易的一部分。只要你想加入這個網路,那必須先成為Mini版礦工,做出微量的POW貢獻,也因此它是去中心化的。

DAG的優勢可以做到高併發,理論上是無限多的併發,意味著它可以大幅提升交易速度。

四、子鏈
說到子鏈,首先繞不開的一個話題就是墨客MOAC鏈,MOAC——即Mother Of All Chain的縮寫,中文翻譯成“眾鏈之母”,或是“女媧鏈”。這是一個主網已經上線了的第三代公鏈,它率先突破非同步合約呼叫、合約分片處理和全領域跨鏈等當前業界難題,對合約的處理速度遠遠優於當前譬如以太坊等智慧合約平臺。
這裡寫圖片描述
子鏈的出現,是一個革命性的變革,如果你考慮墨客MOAC的生態,它就好像一個開發用的GitHub,那麼子鏈,可以變成一個個功能庫,讓子鏈之間可以互相分享。而各種提供服務的子鏈,因為服務的不同,必須有角色細分。比如提供ipfs的子鏈,重點在儲存;提供zksnarks的子鏈,重點在運算速度。那麼怎麼可能用同樣配置的scs來做不同的子鏈支援基礎呢?怎麼可以用同樣的共識演算法,同樣的區塊速度等等,來做不同的事情呢?所以你需要專業人士做專業的事情,那麼子鏈,就是可以根據你不同的需求來定義與建立。

當然,子鏈和側鏈的區別也很大,一方面側鏈是為小微轉賬設計的,不可能提供墨客鏈這種功能庫,互相呼叫的功能,另一方面,側鏈可以直接打垮,子鏈你無法直接攻擊,必須攻擊母鏈。雙花肯定不會出現,因為母鏈這裡解決全域性一致性,主要就是底層vnode的規模受到幣價的挖礦利潤限制,但是scs的規模,可以在應用推動下,無限擴充套件。墨客MOAC就是解決了V神和BM的爭論中,維持了去中心化的安全性,又提升了可擴充套件效能力。
這裡寫圖片描述
實事上,墨客是以太坊的補充(complement),是相容以太坊的。在V神和BM的爭論中,V神批評EOS過於中心化是正確的,而BM批評以太坊缺乏擴充套件能力也是正確的。V神尋求用分片來解決問題,也是正確選擇。墨客,其實就是落實了V神幾年想做而沒有做到的事情(當然還有更多的創新),並且證明了可以不需要犧牲去中心化而解決擴充套件性問題。

以上就是關於可擴充套件性相關技術的一些簡單概括和介紹,實際應用的技術細節和命名方式可能會有很多,但從目前來看,大體都脫離不了側鏈、分片、DAG、子鏈的範疇。

從目前來看,無論何種技術的解決方式都是在從“更高的效率”和“去中心化”二者之間尋找一個平衡,想要效率就要中心化,想要安全就要去中心化,也因此,現有解決方案也都在引發一些“不是去中心化”的質疑聲。

其中爭論最激烈的就是比特幣Core派和BCH派之間,Core派的解決方案是側鏈,BCH就抨擊側鏈最終會淪為中心化的銀行。BCH的解決方案是大區塊,Core派就抨擊BCH本身就是以礦霸為核心的中心化代表。

有爭論才有突破,意味著問題本身就還沒有唯一的答案。這反而證明了我們正處於一個區塊鏈剛剛起步發展的黃金時代,也是區塊鏈現階段的魅力所在,百家爭鳴、各抒己見……投身此間,我倍感慶幸。