你或許也知道,限制目前區塊鏈技術大規模落地應用的一個很重要因素就是效能,這也是為什麼許多傳統網路從業者不太看好區塊鏈技術的一個原因。
那麼,如何解決區塊鏈的效能問題呢?其中的一個解決方案是分片技術(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 個缺陷,我們拭目以待。
以上是V神提到的作為以太坊可擴展性未來的分片是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!