4月7日,V神的網站更新了一篇名為《分片為何如此出色:揭開技術屬性的神秘面紗》的文章,其中提到:分片是以太坊可擴展性的未來,它將是幫助生態系統每秒支持數千筆交易,并允許世界上大部分地區以可承受的成本定期使用該平臺的關鍵。
你或許也知道,限制目前區塊鏈技術大規模落地應用的一個很重要因素就是性能,這也是為什么很多傳統互聯網從業者不太看好區塊鏈技術的一個原因。那么,如何解決區塊鏈的性能問題呢?其中的一個解決方案就是分片技術(Sharding)。
01 什么是分片?
分片是資料庫分區的一種形式,也稱為水平分區,即將一個大的資料庫切分成很多小的、可處理的部分,從而提高性能,縮短響應時間。
分片并不是一個新的概念,早在 90 年代后期就出現在了傳統的中心化資料庫管理中。這個概念的流行,要歸功于一個多玩家同時在線玩的角色扮演游戲 Ultima Online,
在這個游戲中,開發者將玩家分配到不同的服務器來緩解流量壓力(這意味著有很多個平行的“游戲世界”)。商業上,一個普遍的分片案例就是將用戶資訊的資料庫按照地理位置劃分,同一個區域的用戶資訊放在一起,存到單獨的服務器中,
02 什么是區塊鏈領域里的分片?
區塊鏈就相當于一個資料庫,每一個節點都相當于一個獨立的服務器。正常情況下,這些節點每次只有一個節點能獲得記賬出塊的權利,剩下沒獲得出塊權的節點相當于做了“無用功”,白白浪費了算力。
如果將分片技術運用到區塊鏈中,就相當于將區塊鏈網路里的所有待處理任務(比如確認交易、運行 DApp 等)進行分解,全網的節點也進行分組,每一組同時處理一個分解后的任務(比如 150 筆待確認交易),這樣就從原先單一節點處理全網的所有任務變成了多組節點同時并行處理。
舉個例子,假設目前以太坊上有 8,000 個節點(礦工),全網待確認的交易是 15,000 筆,以太坊每秒能處理 7-15 筆交易,正常情況下至少需要 1000 秒才能處理完這些待確認的交易,當然處理的過程中又會有新的待確認交易產生。
如果采用分片技術,將 8,000 個節點分成 100 組,每組 80 個節點,這 15,000 筆待確認交易分成 100 個分區,每個分區 150 筆,那么,每組節點(80 個)可以并行處理各自分區里的待確認交易(150 筆),這樣最快 10 秒鐘就可以全部處理完那 15,000 筆待確認交易,
從這個例子中,我們可以看到,分片技術可以大幅提高區塊鏈的性能,
03 分片技術潛在的風險
那么,分片技術有沒有缺陷呢?答案是肯定的,
分片技術雖然能在一定程度上解決區塊鏈的性能問題,讓區塊鏈更具有可擴展性,但也存在兩個缺陷,
一個是分區后,不同區的通信問題。上面的例子,將以太坊網路分成 100 個分區,每個分區都是獨立的,相當于有 100 條獨立的、平行的以太坊區塊鏈,每條都由一組礦工(80 個節點)維護和確認交易。
這 100 條獨立的以太坊區塊鏈并不能相互通信,如果要通信,勢必要增加跨分區的通信機制(類似垮鏈),這會增加區塊鏈的復雜性,開發難度也會提高,
第二個是區塊鏈的安全性,還是上面的例子,在未分片之前,以太坊網路是 8,000 個節點組成的算力,分成 100 個分區后,每個分區相當于一條獨立的以太坊區塊鏈,算力下降到 80 個節點組成的算力,
此時,對其中一個分區進行 51% 算力攻擊就容易很多,控制了一個分區,攻擊者就可以在這個分區內做惡,篡改交易,
以太坊基金會計劃將分片技術作為以太坊 2.0 的升級內容之一。以太坊如何解決分片技術的上述 2 個缺陷,我們拭目以待,
除了性能問題,你覺得目前的區塊鏈技術還存在哪些問題?歡迎在留言區分享,