1. 程式人生 > >分片技術(Sharding):化整為零,分而治之

分片技術(Sharding):化整為零,分而治之

目前的區塊練技術面臨著一個巨大的瓶頸,那就是:如何有效地提升區塊的吞吐量(TPS)。

區塊鏈的擴充套件性一直是大多數公鏈發展過程中難以避開的一塊攔路石,比特幣因之有一段長達三年的擴容之爭,以太坊一度因為一個小小的密碼貓遊戲而長時間擁堵不堪。

目前提出的問題解決思路主要有以下幾種:治標不治本的擴容(擴大區塊容量)、犧牲部分去中心化的DPoS和pBFT共識機制、不同於區塊鏈的DAG、鏈下擴容(子鏈和側鏈),以及分片。

分片(Sharding)技術,被認為是一種有效的、能夠解決區塊鏈吞吐量問題的解決方案。

分片技術

  • 起源

分片原本是一種資料庫分割槽技術,能夠將一個大型的資料庫分割成小的資料碎片,並將這些碎片儲存在不同的伺服器上,使其能夠更快更有效地管理資料。

而區塊鏈中的分片技術,是在2015年初次提出的。當時新加坡國立大學的一對師生,在國際頂尖安全會議CCS上發表了一篇論文《A Secure Sharding Protocol For Open Blockchains》,首次提出了區塊鏈領域中的分片概念。

後來,這對師生髮展出了第一個分片技術的落地專案Zilliqa,它結合pBFT和PoW共識機制,有6個分片,3600個節點的測試網路,已經能夠達到每秒處理2800次交易的速度,是目前公鏈中處理速度最快的。

珠玉在前,很多為擴充套件性煩惱不已的專案開始考慮將分片技術應用在自家的區塊鏈上,比如以太坊,V神已經打算在以太坊的區塊鏈上應用分片技術來擴大吞吐量了。此外,還有很多以此為核心技術的新專案正在出現,當然其中也不乏打著分片旗號掛羊頭賣狗肉的專案。

不過,分片技術並不是那麼容易掌握的。

  • 分類和原理

分片技術,有這麼幾大類:網路分片、交易分片、狀態分片。它們的基本原理,都是“化整為零,分而治之”,用多個分片同時處理不同的交易,最後彙總到主鏈上。

首先,網路分片。網路分片較為簡單,但也最為重要,因為其他分片機制都必須建立在網路分片之上。網路分片首先要保證安全,預防網路攻擊和惡意節點的干擾,隨機抽取出特定數量的節點,建立成一個分片。當形成多個分片後,分片中自行建立共識,對交易進行確認。這些分片可以同時、平行地處理相互未建立連線的交易,提高網路併發量。

Zilliqa便是運用網路分片,然後配合網路分片的共識機制,即pBFT共識機制和PoW共識機制,來提升交易速度的。在其中,共識機制之所以重要,在於確認一筆交易,使用pBFT共識機制,可以提高確認速度;而在建立分片之前,要先對網路攻擊進行防範,Zilliqa加入PoW機制,就可以有效地阻止女巫攻擊(Sybil Attacks)和惡意節點的進入。

其次是交易分片。網路上建立好的分片處理不同的交易,劃分為不同的交易分片,交易劃分的依據可以是交易發起者的地址。

假設有人用一個地址向兩個人發起相同的交易,即所謂的“雙花”,一般情況下,這兩筆交易將被劃分到同一個分片進行處理,之後分片能夠迅速識別出相同的發起地址,從而阻止雙重花費。

而如果這兩筆交易被分到了不同的分片,分片中的節點同樣能夠檢測出來,將這筆交易拒絕。不過,要防止雙花,在驗證中就需要分片之間相互通訊,這樣就會出現跨片交易的情況,影響整個網路的執行和效益。所以,這裡的分片最好採用UTXO交易模型,更加容易監測出雙花,以保證效率。

但UTXO會對大宗交易額進行拆分,一定程度上會影響效率。不過,目前的交易分片技術已經較為成熟,能夠允許多種共識機制執行。

最後是狀態分片,這是最為複雜、最具有挑戰性的一種分片機制。狀態分片的核心在於,不同的分片能夠儲存不同的資料,也就是說,整個儲存庫被分開,分別放在了不同的分片上。每個分片儲存自己分片中的所有資料,而不是整個區塊鏈的狀態。

這一分片機制的挑戰在於:

首先,由於每個分片儲存的狀態不同,如果一筆交易的發起人和接收者處在兩個不同的分片,那麼這兩個分片對於這筆交易的資訊就應該進行共享,這樣一來,跨片交易的現象又出現了,兩個分片之間又得進行頻繁的通訊和狀態互換,將會大大影響分片的效益和效能。

然後,當分片遭到攻擊不得不進行離線工作,其中的交易是無法被驗證的。要解決這個問題,就必須在每個節點進行資訊的存檔和備份,以幫助系統修復資料,但這樣的話,節點就必須要備份整個儲存系統的狀態,失去狀態分片的意義,甚至還可能具有中心化的風險。

  • 優勢與阻礙

分片技術作為能解決區塊鏈拓展性問題的新技術之一,具有非常強的技術優勢和廣闊的發展前景。通過分片處理交易和資料的方式來消除區塊的擁堵,擴大吞吐量,結合其他技術加強安全性和效率,進行互補,是目前分片技術的主要運用趨勢。

分片中安全性和效能的平衡是一個值得重視的問題,Zilliqa經過多次實驗,決定用600個節點構建一個分片,這是因為600個節點能夠到達效能和安全的最佳平衡。而如果為了提高TPS一味減少節點,對於分片的去中心化和安全性都是很不利的。

分片技術依然存在著很多難題需要解決,尤其是狀態分片,計算機技術人員尚未研究出好的解決方案。同時,分片的原理不僅僅在於如何分片,更在於如何對每個分片進行安全有效的治理,很多專案一味追求其中的一個方面,忽視了區塊鏈的基本治理問題,這也是需要注意的。

文章來源:BB財經

原文連結:http://www.bbcaijing.cn/article/news/20736.html

關注區塊鏈技術,區塊鏈資訊,數字貨幣行情