時間:2022-02-14|瀏覽:531
什么是分片(Sharding)
分片技術(shù)不是一個創(chuàng)新的概念。早在區(qū)塊鏈技術(shù)出現(xiàn)之前,它就在傳統(tǒng)數(shù)據(jù)庫中運行,主要用于優(yōu)化大型商業(yè)數(shù)據(jù)庫。
概念是將數(shù)據(jù)庫中的數(shù)據(jù)切割成許多數(shù)據(jù)片,然后將這些片分配到不同的伺服器中存儲。這樣,單個伺服器的壓力就不會太大,因為短時間內(nèi)有大量的數(shù)據(jù)訪問請求。
在傳統(tǒng)的區(qū)塊鏈網(wǎng)絡(luò)中,交易必須有網(wǎng)絡(luò)中的每個節(jié)點進行確認,以保證交易的安全,然而這也是導致交易速度難以提升的主因之一。
分片技術(shù)-pow
將分片技術(shù)應(yīng)用到區(qū)塊鏈網(wǎng)絡(luò)中的方法是將區(qū)塊鏈網(wǎng)絡(luò)劃分為幾個子網(wǎng)絡(luò)(或分片,shard),每個子網(wǎng)絡(luò)都將包含一些節(jié)點,網(wǎng)絡(luò)中的數(shù)據(jù)存儲和交易將隨機分配到每個片段進行處理。
這樣,每個節(jié)點只需要處理一小部分工作,不同片段的交易可以并行處理,從而提高網(wǎng)絡(luò)的交易速度。
分片技術(shù)-分片
此外,大多數(shù)傳統(tǒng)的區(qū)塊鏈都是單鏈結(jié)構(gòu),所有礦工都將競爭下一個區(qū)塊的會計權(quán)。
而且大多數(shù)區(qū)塊鏈產(chǎn)生的平均時間都是固定的,比如比特幣平均每10分鐘產(chǎn)生一個區(qū)塊。
即使越來越多的礦工加入了采礦行列,區(qū)塊鏈也會自動增加采礦難度,以確保每10分鐘固定一個區(qū)塊。
簡單地說,區(qū)塊鏈網(wǎng)絡(luò)中計算能力的提高并不能提高交易速度,這就是為什么區(qū)塊鏈不能擴展。
如果你想用一個簡單的例子來就像把車換成車一樣V8臺馬力發(fā)動機,但汽車電腦設(shè)置了速度限制,不能超過60臺。
區(qū)塊鏈計算能力的提高意味著分片數(shù)量的提高。
也就是說,網(wǎng)絡(luò)投入的計算能力越多,能同時并行處理的交易就越多,整個網(wǎng)絡(luò)的交易速度也會線性提高。
區(qū)塊鏈上使用的分片技術(shù)可分為三種:
網(wǎng)絡(luò)分片(network sharding)、交易分片(transaction sharding)、狀態(tài)分片(state sharding)。
網(wǎng)絡(luò)分片(network sharding)
由于區(qū)塊鏈的區(qū)塊與區(qū)塊之間有很強的連接,也就是說,每次增加區(qū)塊,礦工都需要相互溝通,以確認新區(qū)塊的有效性。
雖然這可以保證鏈上交易記錄的正確性,但區(qū)塊鏈結(jié)構(gòu)存在不可擴展的缺點。
因此,分片的第一步是將區(qū)塊鏈網(wǎng)絡(luò)分片,然后在盡可能減少相互通信的前提下,對鏈上交易進行處理。
簡單來說,礦工隨機分組,然后分配給各組礦工獨立驗證。
網(wǎng)絡(luò)分片涉及的問題是如何保證分片后鏈上交易的安全性。
隨機分配
礦工分組后,網(wǎng)絡(luò)分片的第一個問題是攻擊者的攻擊成本會大大降低。
要防范攻擊者最好的做法,就是建立隨機性。
區(qū)塊鏈底層Layer1擴容方案
在區(qū)塊鏈領(lǐng)域建立隨機性的主要方法是使用可驗證隨機函數(shù)(VRF,Verifiable Random Function),利用這種算法,網(wǎng)絡(luò)可以隨機抽取節(jié)點分組形成分片。
這種隨機抽樣可以防止惡意節(jié)點控制單片。
分片共識機制
礦工分組問題解決后,要面對的問題是礦工分組后如何達成共識。
達成共識的算法可以選擇我們熟悉的算法PoW、PoS、PBFT等待共識機制。
簡單地說,網(wǎng)絡(luò)分片是礦工的挖掘規(guī)則。為了在不失去集中特性的情況下,開發(fā)人員需要盡可能地在安全和效率之間取得良好的平衡。
例如,需要仔細考慮網(wǎng)絡(luò)中分片的數(shù)量和每個分片中節(jié)點的數(shù)量。
交易分片(transaction sharding)
網(wǎng)絡(luò)分割是針對礦工的游戲規(guī)則,交易分割是針對哪些交易應(yīng)該分配到哪些分割。但區(qū)塊鏈賬本模型的差異會影響交易分割的發(fā)展。
UTXO帳本模型
UTXO比特幣等賬本系統(tǒng)的交易記錄由多個賬本系統(tǒng)組成input和多個output構(gòu)成,沒有賬戶概念,也沒有余額記錄,我們無法根據(jù)地址有效地避免雙花問題。
UTXO更直觀的交易分割方式是根據(jù)交易hash最后幾個值進行分片。
例如,“如果哈希值的最后一個值是0的話,那麼交易將被分配給分片1,否則它被分配給分片2(假設(shè)只有兩個分片)。”
然而,我們說過,UTXO的交易是由input和output構(gòu)成,假設(shè)A哈希值的最后一個值是0,被分配到第一部分進行驗證。
此時,A又發(fā)起一筆input相同但output不同(發(fā)送給不同的人)的交易被分配到第二部分。如果不采取任何措施,兩筆交易將同時處理和驗證,導致雙花攻擊。
在UTXO在賬本系統(tǒng)的交易分片中,解決雙花攻擊的方法是分片1和分片2相互通信,以確保同一筆錢沒有重復花費。
但在實際過程中,有大量的分片和交易hash值是隨機的,交易會隨機分配到每個片段,這意味著每個片段必須相互溝通。
顯然,這種方法不起作用,因為如果這樣做,就意味著分片不能獨立驗證,分片毫無意義。UTXO先天分片難以實現(xiàn)。
Account帳本模型
由于UTXO賬本模型很難實現(xiàn)交易分片。因此,大多數(shù)使用分片技術(shù)的區(qū)塊鏈都像以太坊Account帳簿系統(tǒng)。
有了帳戶,每一筆交易將會包含發(fā)送者的地址與余額。
因此,我們只需要根據(jù)發(fā)送人的地址對交易進行分割,以確保同一賬戶發(fā)送的多筆交易將在同一分割中處理,從而有效地檢測雙花交易。
但是,一旦涉及到跨片交易,例如,如果分片1的賬戶想要與分片10的賬戶進行交易,就必然需要跨片溝通來驗證交易的有效性。
但與UTXO至少不需要和所有的分片溝通,只需要分片1和分片10溝通。
狀態(tài)分片(state sharding)
狀態(tài)分片可以簡單地理解為儲在不同分片中的區(qū)塊鏈數(shù)據(jù)分配。
它涉及鏈上數(shù)據(jù)的分片,即鏈上數(shù)據(jù)和交易記錄的分片存儲,從而減輕節(jié)點的存儲負擔。
與其他兩種分片機制相比,狀態(tài)分片是最棘手的問題。
有三個問題需要解決。
1)跨片交易通信的效益平衡
在過去,區(qū)塊鏈的狀態(tài),如賬戶余額存儲在整個網(wǎng)絡(luò)中,由整個網(wǎng)絡(luò)節(jié)點共同更新和維護。
然而,在分割機制下,交易將根據(jù)地址分配到不同的分割處理中,即狀態(tài)只存儲在地址所在的分割中。此時面臨的一個問題是,交易不僅在一個分割中進行,而且經(jīng)常涉及跨分割交易。
因此,如果交易雙方的賬戶分配在不同的部分,則必須在部分和部分之間進行溝通,以確保交易的有效性。頻繁的跨部分互動很容易導致整體網(wǎng)絡(luò)效率的下降。
例如:
A分片1分配地址,分片1也存儲交易記錄。
B分片2分配地址,分片2存儲交易記錄。
一但A要打幣給B,跨片交易將形成,過去的交易記錄將以確認交易的有效性,A頻繁打幣B,分片2必須不斷與分片1互動,從而降低交易的處理效率。
2)分片動態(tài)刷新與節(jié)點狀態(tài)更新之間的平衡
隨著時間的推移,區(qū)塊鏈節(jié)點會增加,如果節(jié)點長時間不重新分配,會導致交易狀態(tài)過度集中,降低攻擊彈性。
因此,網(wǎng)絡(luò)需要每隔一段時間重新調(diào)整一次網(wǎng)絡(luò)節(jié)點,即所謂的動態(tài)分片,新節(jié)點也會更新和同步其分片狀態(tài)。
然而,每次節(jié)點調(diào)整都必須在分割完成網(wǎng)絡(luò)同步后才能開始處理交易,這將導致一些延遲。因此,在設(shè)計過程中,必須掌握節(jié)點調(diào)整的數(shù)量和時間,否則很可能導致分割癱瘓。
3)全網(wǎng)數(shù)據(jù)備份與集中風險的平衡
另一個問題是,如果一些特定的片段受到攻擊,其驗證將失去有效性。由于片段沒有復制系統(tǒng)的所有狀態(tài),網(wǎng)絡(luò)無法驗證依賴片段的交易。
解決這個問題的方法是維護存檔或備份節(jié)點,以幫助系統(tǒng)修復故障和恢復不可用的數(shù)據(jù)。
然而,這意味著系統(tǒng)的狀態(tài)只存儲在少數(shù)節(jié)點中,這將導致一些集中的風險。
鏈金研究員總結(jié)
與其他解決方案相比,分片技術(shù)雖然復雜且難以實現(xiàn),但目前仍備受期待Layer1擴容方案。
著名的分片項目Zilliqa主網(wǎng)于2019年1月31日正式上線,過去在測試網(wǎng)上表現(xiàn)不錯,實際效率還有待確認。
我們熟悉的以太坊將從以太坊1慢慢開始進化.0進化到以太坊2.0除了將共識機制從PoW改成PoS還會加入Beacon Chain在以太坊實現(xiàn)分片技術(shù)。
分片技術(shù)的發(fā)展,或許將成為區(qū)塊鏈邁向落地應(yīng)用的一項重要決定性因素。