麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

區(qū)塊鏈分片技術(shù)研究(1)— 技術(shù)解析區(qū)塊鏈

狂人研究院 2018-08-18 17:52
分享到:
導(dǎo)讀

分片技術(shù)(Sharding)作為以太坊未來(lái)擴(kuò)容方案的一部分,引起了廣泛的市場(chǎng)關(guān)注。同時(shí)也有多個(gè)主打分片技術(shù)的新公有鏈項(xiàng)目加入了競(jìng)爭(zhēng),比如Zilliqa,Rchain,Quarkchain等,使這項(xiàng)技術(shù)在行業(yè)中的熱度越來(lái)越高。

面對(duì)公有鏈目前存在的低吞吐量的性能瓶頸,許多公有鏈項(xiàng)目都提出了不同的擴(kuò)容方案。從方向上來(lái)說(shuō),可以分為鏈上擴(kuò)容和鏈下擴(kuò)容兩個(gè)方向,分片技術(shù)是屬于鏈上擴(kuò)容的一種方案。

image.png

分片技術(shù)(Sharding)作為以太坊未來(lái)擴(kuò)容方案的一部分,引起了廣泛的市場(chǎng)關(guān)注。同時(shí)也有多個(gè)主打分片技術(shù)的新公有鏈項(xiàng)目加入了競(jìng)爭(zhēng),比如Zilliqa, Rchain, Quarkchain等,使這項(xiàng)技術(shù)在行業(yè)中的熱度越來(lái)越高。

這篇文章作為區(qū)塊鏈分片技術(shù)研究的第一部分將會(huì)介紹分片技術(shù)的概念。

一、什么是分片

分片技術(shù)的概念要比區(qū)塊鏈技術(shù)早得多,最早是在傳統(tǒng)的數(shù)據(jù)庫(kù)領(lǐng)域里面提出的,主要用于大型商業(yè)數(shù)據(jù)庫(kù)的優(yōu)化。其概念就是將大型數(shù)據(jù)庫(kù)中的數(shù)據(jù)劃分成很多數(shù)據(jù)分片(shard),再將這些數(shù)據(jù)分片分別存放在不同的服務(wù)器中,以減小每個(gè)服務(wù)器的數(shù)據(jù)訪問(wèn)壓力,從而提高整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的性能。

簡(jiǎn)單來(lái)說(shuō),分而治之是分片技術(shù)的核心思想。

而把分片技術(shù)運(yùn)用到區(qū)塊鏈網(wǎng)絡(luò)中的思想是將擁有許多節(jié)點(diǎn)的區(qū)塊鏈網(wǎng)絡(luò)劃分成若干個(gè)子網(wǎng)絡(luò),每個(gè)子網(wǎng)絡(luò)中包含一部分節(jié)點(diǎn),也就是一個(gè)“分片”(shard)。同時(shí)網(wǎng)絡(luò)中的交易也會(huì)被劃分到不同的“分片”中去處理,這樣每個(gè)節(jié)點(diǎn)只需要處理一小部分傳入的交易,不同的節(jié)點(diǎn)可以并行處理交易,即可增加交易處理和驗(yàn)證的并發(fā)度,從而提升整個(gè)網(wǎng)絡(luò)的吞吐量。

傳統(tǒng)的老牌公有鏈大部分都是單鏈結(jié)構(gòu),所有礦工都在相互競(jìng)爭(zhēng)去延伸下一個(gè)區(qū)塊。由于產(chǎn)生區(qū)塊的平均時(shí)間是固定的,例如比特幣平均每10分鐘產(chǎn)生一個(gè)區(qū)塊,隨著越來(lái)越多的礦工加入挖礦行列,挖抗難度得到提升,以保證每10分鐘產(chǎn)生一個(gè)區(qū)塊。但是,隨著投入更多的礦機(jī),整個(gè)系統(tǒng)的吞吐量并沒(méi)有得到提升。比特幣處理交易過(guò)程如下圖所示:

image.png

傳統(tǒng)比特幣交易處理示意圖

在引入分片技術(shù)之后,隨著整個(gè)網(wǎng)絡(luò)算力的線性提升(即節(jié)點(diǎn)數(shù)增加),分片的數(shù)量也會(huì)增加,進(jìn)而提高了交易處理的并發(fā)度,整個(gè)網(wǎng)絡(luò)的吞吐量也會(huì)線性提升。這個(gè)特點(diǎn)被稱為可擴(kuò)展性,又被稱為水平擴(kuò)容屬性。分片網(wǎng)絡(luò)處理交易過(guò)程如下圖所示:

image.png

分片網(wǎng)絡(luò)處理交易過(guò)程示意圖

分片技術(shù)給區(qū)塊鏈網(wǎng)絡(luò)帶來(lái)了如下好處:

1.從理論上講,分片技術(shù)可以提高交易處理和確認(rèn)的并發(fā)度,進(jìn)而可以對(duì)整個(gè)網(wǎng)絡(luò)的吞吐量提高幾十倍甚至上百倍;

2.吞吐量成倍的增加,使得交易擁堵的問(wèn)題得以有效的解決,有助于轉(zhuǎn)賬手續(xù)費(fèi)的降低;

3.整個(gè)網(wǎng)絡(luò)的吞吐量大幅提升,改變了人們對(duì)于加密貨幣支付效率低的看法,這將很大程度上促進(jìn)dApp的發(fā)展,使得更多的dApp在分片網(wǎng)絡(luò)上運(yùn)行。雖然單筆交易手續(xù)費(fèi)降低了,但是總體會(huì)提升挖礦收益,從而形成良性循環(huán)。

4.經(jīng)典的以太坊公鏈狀態(tài)信息都存儲(chǔ)在區(qū)塊鏈上,每個(gè)節(jié)點(diǎn)將保存全部的狀態(tài)信息,這使得它的存儲(chǔ)空間變得非常昂貴。狀態(tài)分片具有很好的存儲(chǔ)空間可擴(kuò)展性,它的實(shí)現(xiàn)將極大地解決存儲(chǔ)空間昂貴的問(wèn)題。

二、網(wǎng)絡(luò)分片、交易分片、狀態(tài)分片

分片技術(shù)根據(jù)不同的分片機(jī)制可以劃分為三種:網(wǎng)絡(luò)分片(network sharding),交易分片(transaction sharding),狀態(tài)分片(state sharding)。

1.網(wǎng)絡(luò)分片

網(wǎng)絡(luò)分片是最基礎(chǔ)的一種分片方式,就是將整個(gè)區(qū)塊鏈網(wǎng)絡(luò)劃分成多個(gè)子網(wǎng)絡(luò),也就是一個(gè)分片。網(wǎng)絡(luò)中的所有分片并行處理網(wǎng)絡(luò)中不同的交易。

這里主要涉及到的問(wèn)題是哪些節(jié)點(diǎn)應(yīng)該被分配到哪些分片當(dāng)中。

image.png

網(wǎng)絡(luò)節(jié)點(diǎn)應(yīng)該如何分片

⑴通過(guò)VFR來(lái)生成隨機(jī)性

由于網(wǎng)絡(luò)分片的特點(diǎn)是多個(gè)分片并行處理,提高并發(fā)度的代價(jià)是每個(gè)分片處理的交易之間沒(méi)有冗余或者只有較少的冗余,一個(gè)分片中的處理結(jié)果將很可能決定了整個(gè)網(wǎng)絡(luò)的處理最終結(jié)果。因此如果一個(gè)分片中的大量節(jié)點(diǎn)被一些人控制,那么這些被控制的大量節(jié)點(diǎn)完全可以左右這個(gè)分片的處理結(jié)果,從而威脅到整個(gè)網(wǎng)絡(luò)的安全性。

因此,開發(fā)者需要一個(gè)合適的機(jī)制來(lái)對(duì)網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行劃分,以確定哪些節(jié)點(diǎn)可以安全地保留在哪些分片中,從而避免那些控制大量特定分片的人所發(fā)起的攻擊 。

而防止一些人控制大量特定分片的最好方式就是建立隨機(jī)性。在區(qū)塊鏈領(lǐng)域建立隨機(jī)性的方式主要是利用可驗(yàn)證隨機(jī)函數(shù)(VFR, Verifiable Random Function),即一種非對(duì)稱加密算法中的hash函數(shù)。利用隨機(jī)性,網(wǎng)絡(luò)可以隨機(jī)抽取節(jié)點(diǎn)形成分片。這樣一種隨機(jī)抽樣的方式可以防止惡意節(jié)點(diǎn)過(guò)度填充單個(gè)分片。

image.png

某分片被人控制的后果

⑵ 可通過(guò)傳統(tǒng)共識(shí)算法在分片中達(dá)成共識(shí)

然而,僅僅使用隨機(jī)機(jī)制將節(jié)點(diǎn)分配給分片是不夠的,我們還必須要確保網(wǎng)絡(luò)的一個(gè)分片中不同成員意見(jiàn)的一致性,即如何達(dá)成共識(shí)。達(dá)成共識(shí)的算法可以選擇我們熟知的POW、POS、pBFT等共識(shí)機(jī)制。 為了在分片的同時(shí)不失去去中心化特性,開發(fā)者需要盡可能地提高每個(gè)分片中節(jié)點(diǎn)的數(shù)量。

image.png

一個(gè)特定分片內(nèi)節(jié)點(diǎn)達(dá)成共識(shí)示意圖

2.交易分片

由于網(wǎng)絡(luò)分片是其他所有分片的基礎(chǔ),因此交易分片的前提是先進(jìn)行網(wǎng)路分片。交易分片主要涉及的問(wèn)題是哪些交易應(yīng)該按照特定的屬性被分配到哪些碎片當(dāng)中。

⑴ 基于UTXO的賬本系統(tǒng)

在基于UTXO的賬本系統(tǒng)中,一筆交易可能由多個(gè)輸入和多個(gè)輸出構(gòu)成,我們沒(méi)有辦法按照地址進(jìn)行交易分片來(lái)有效地避免雙花問(wèn)題。比較直觀的交易分片方式是按照交易的hash值最后幾位進(jìn)行分片。

假設(shè)我們有4個(gè)分片,那么我們就按照交易hash值的最后兩位比特進(jìn)行分片。例如,一筆交易的hash值最后兩位是10,則我們將該交易分配到第3個(gè)分片中進(jìn)行處理(兩位比特的值00,01,10,11分別對(duì)應(yīng)于第1、2、3、4分片區(qū))。

而如果這個(gè)時(shí)候交易的發(fā)起者同時(shí)又發(fā)起了另一筆交易,和之前的交易具有相同的輸入,但是輸出卻不同,而該交易hash值的最后兩位是00,那么該交易則被分配到了第一個(gè)分片中進(jìn)行處理。

如果不采取任何措施,這兩筆交易將同時(shí)在兩個(gè)分片當(dāng)中進(jìn)行處理和驗(yàn)證,這將導(dǎo)致一筆雙花交易。

image.png

基于UTXO系統(tǒng)的交易分片示意圖

為了防止雙花交易,分片1和分片3不得不進(jìn)行通信,來(lái)達(dá)到信息的交互。而實(shí)際過(guò)程中,這種交易的hash值是隨機(jī)的,系統(tǒng)必須保證每個(gè)分片之間都進(jìn)行信息的交互。而實(shí)際上,這種相互之間的通信可能會(huì)破壞交易分片的整個(gè)目的。

⑵基于賬戶系統(tǒng)

在基于賬戶系統(tǒng)中,上述問(wèn)題可以得到很好的解決。即一筆交易只有一個(gè)輸入,而輸入的地址將被記錄在賬戶系統(tǒng)中。該賬戶系統(tǒng)在交易分片的每個(gè)分片中是全局可見(jiàn)的,因此我們只需要將交易按照發(fā)送者的地址進(jìn)行分片,即可保證同一個(gè)賬戶發(fā)出的多筆交易將被在同一個(gè)分片當(dāng)中被處理,這樣該分片可以有效的檢測(cè)雙花交易而不需要復(fù)雜的跨分片的通信。

image.png

3.狀態(tài)分片

在所有的分片當(dāng)中,狀態(tài)分片是最具挑戰(zhàn)的分片方式。狀態(tài)分片的關(guān)鍵是將整個(gè)存儲(chǔ)區(qū)分開,讓不同的分片存儲(chǔ)不同的部分,每個(gè)節(jié)點(diǎn)只負(fù)責(zé)托管自己的分片數(shù)據(jù),而不是存儲(chǔ)完整的區(qū)塊鏈狀態(tài)。狀態(tài)分片可以減少狀態(tài)的冗余存儲(chǔ),使得整個(gè)區(qū)塊鏈網(wǎng)絡(luò)具有存儲(chǔ)的可擴(kuò)展性。

⑴ 跨分片信息通信不可避免

在賬戶型系統(tǒng)中,狀態(tài)分片是按照賬戶的地址進(jìn)行分片的,并且一個(gè)特定的分片只會(huì)保留一部分狀態(tài),而不像是交易分片那樣每個(gè)節(jié)點(diǎn)都保存整個(gè)網(wǎng)絡(luò)中的所有狀態(tài)。

假設(shè)A創(chuàng)建了一筆交易,將支付B一筆錢。這筆交易將由第一個(gè)分片進(jìn)行處理,一旦該筆交易被驗(yàn)證,關(guān)于B的新余額的信息就必須與他所在的分片進(jìn)行共享。如果這兩個(gè)帳戶由不同的分片進(jìn)行處理,那么這可能需要進(jìn)行頻繁的跨分片通信和狀態(tài)交換??绶制ㄐ趴赡苡謺?huì)降低狀態(tài)分片的性能。

image.png

⑵數(shù)據(jù)的可用性是必須考慮的問(wèn)題

狀態(tài)分片的第二個(gè)挑戰(zhàn)是數(shù)據(jù)的可用性。我們必須考慮這樣的場(chǎng)景:由于某種特定的原因,一些特定的分片遭到了攻擊而導(dǎo)致其脫機(jī)。由于分片并沒(méi)有復(fù)制系統(tǒng)的全部狀態(tài),所以網(wǎng)絡(luò)不能再驗(yàn)證那些依賴于脫機(jī)分片的交易。

解決此問(wèn)題的方法是維護(hù)存檔或進(jìn)行節(jié)點(diǎn)備份,這樣就能幫助系統(tǒng)進(jìn)行故障修復(fù)以及恢復(fù)那些不可用的數(shù)據(jù)。但是,這樣就使得一些節(jié)點(diǎn)將不得不存儲(chǔ)系統(tǒng)的整個(gè)狀態(tài),同時(shí)這還會(huì)引發(fā)一些中心化的風(fēng)險(xiǎn)。

⑶網(wǎng)絡(luò)節(jié)點(diǎn)調(diào)整需要逐步進(jìn)行

任何分片機(jī)制中需要考慮的另一個(gè)要點(diǎn)是,確保分片在抵御攻擊和失敗時(shí)是具有彈性的,網(wǎng)絡(luò)分片必須接受新的節(jié)點(diǎn)并以隨機(jī)的方式將這些分配給不同的分片。簡(jiǎn)而言之,網(wǎng)絡(luò)必須能夠在一段時(shí)間內(nèi)進(jìn)行節(jié)點(diǎn)的重新分配。

在狀態(tài)分片的情況下,重新分配節(jié)點(diǎn)是非常困難的。由于每個(gè)分片只保留了狀態(tài)的一部分,所以在一次重新調(diào)整網(wǎng)絡(luò)的過(guò)程中,必須要防止調(diào)整過(guò)大而導(dǎo)致在同步完成前可能會(huì)出現(xiàn)的整個(gè)系統(tǒng)失效的問(wèn)題。為了防止系統(tǒng)的中斷,我們必須對(duì)網(wǎng)絡(luò)進(jìn)行逐步調(diào)整,以確保每個(gè)分片在所有節(jié)點(diǎn)被清空前仍有足夠多的舊節(jié)點(diǎn)。

而新節(jié)點(diǎn)在加入分片之前,需要等待同步完該分片中的狀態(tài)信息之后才可以正式加入分片并提供算力。

值得注意的是,一條公鏈可能會(huì)同時(shí)使用多種分片技術(shù),它們之間并不互相矛盾。從網(wǎng)絡(luò)分片到交易分片再到狀態(tài)分片,在技術(shù)實(shí)現(xiàn)難度上來(lái)看,它們的難度依次遞增。我們?cè)诿枋鲆粭l公鏈所采取的分片技術(shù)的時(shí)候,往往以它用到的最難的技術(shù)作為其標(biāo)簽。

三、采用分片技術(shù)的公有鏈:以太坊 vs Zilliqa

1.以太坊分片概述

為了解決可擴(kuò)展性問(wèn)題,以太坊2.0的分片引入了鏈上狀態(tài)分區(qū)(on-chain state partition)的概念來(lái)獲得更高的吞吐量。以太坊2.0將以太網(wǎng)絡(luò)分為兩層,上層為現(xiàn)有的以太坊主鏈,基本保持不變;下層為分片鏈,主要用于分片運(yùn)算。不同層次的對(duì)象區(qū)別如下:

image.png

可以簡(jiǎn)單地這么認(rèn)為,分片中的交易都會(huì)被裝入“校對(duì)快” (collation)。 與側(cè)鏈類似,校對(duì)器(collator)只有一小部分會(huì)被記錄到主鏈:

1) 分片鏈上的交易處于自己獨(dú)立的空間中,分片驗(yàn)證人(shard validator)只需要驗(yàn)證他們所關(guān)注的分片。

2) 分片鏈通過(guò) POS 機(jī)制依附于主鏈,以獲得更高層次的共識(shí)(higher level of consensus)。

具體過(guò)程就是分片中包含多個(gè)節(jié)點(diǎn),即分片驗(yàn)證人,他們可以通過(guò)POS機(jī)制在分片中完成交易的驗(yàn)證,驗(yàn)證之后產(chǎn)生一個(gè)校對(duì)塊,而這個(gè)校對(duì)塊的一頭部信息被加入到主鏈上面,具體的交易并不保存在主鏈上面。

一方面,以太坊2.0通過(guò)引入獨(dú)立分片,賦予了整個(gè)網(wǎng)絡(luò)的并行處理能力,提升了整個(gè)系統(tǒng)的吞吐量;另一方面,每個(gè)分片只保存一部分的歷史狀態(tài)數(shù)據(jù),主鏈不需要保存具體的交易信息,可以大大降低節(jié)點(diǎn)的存儲(chǔ)壓力。

2.Zilliqa分片概述

Zilliqa通過(guò)Pow算法完成網(wǎng)絡(luò)節(jié)點(diǎn)的劃分過(guò)程:選出1個(gè)Boss分片和多個(gè)工作分片,每個(gè)分片有不低于600個(gè)節(jié)點(diǎn)。其設(shè)計(jì)思想來(lái)源于谷歌提出的Map-reduce編程模型的思想。它的分片分為兩個(gè)階段:

1) Map:網(wǎng)絡(luò)上的每一筆交易會(huì)根據(jù)發(fā)送者的地址被映射到工作分片中,工作分片通過(guò)pBFT共識(shí)算法在各自的分片當(dāng)中驗(yàn)證交易,最終形成當(dāng)前工作分片中的子區(qū)塊。

2) Reduce(Merge):工作分片將子區(qū)塊發(fā)送到Boss分片,Boss分片將多個(gè)子區(qū)塊進(jìn)行驗(yàn)證、打包,合并生成最終區(qū)塊,保存在各個(gè)節(jié)點(diǎn)當(dāng)中。

Zilliqa分片技術(shù),是屬于網(wǎng)絡(luò)分片和交易分片的范疇,網(wǎng)絡(luò)的節(jié)點(diǎn)是運(yùn)作在同一個(gè)空間。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都工作在主鏈上,并且每個(gè)節(jié)點(diǎn)都保存著所有的歷史記錄。綜上,Zilliqa通過(guò)網(wǎng)絡(luò)切分,多個(gè)工作分片并行工作,能夠極大提升系統(tǒng)的吞吐量,但是每個(gè)節(jié)點(diǎn)依然保持所有歷史記錄,并沒(méi)有解決存儲(chǔ)空間的擴(kuò)展性問(wèn)題。

3.以太坊與Zilliqa分片技術(shù)對(duì)比

image.png

四、總結(jié)

在本文中我們講解了分片技術(shù)概念的起源以及其在區(qū)塊鏈網(wǎng)絡(luò)中的應(yīng)用,然后介紹了分片技術(shù)的三種形式:網(wǎng)絡(luò)分片、交易分片、狀態(tài)分片,最后介紹了以太坊與Zilliqa所采用的分片技術(shù)的異同。在區(qū)塊鏈分片技術(shù)研究的第二部分,我們將詳解分析和講解一些采用了分片技術(shù)的區(qū)塊鏈項(xiàng)目。

分片 網(wǎng)絡(luò) 交易 節(jié)點(diǎn) 狀態(tài)
分享到:

1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來(lái)源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來(lái)源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。


專題報(bào)道

主站蜘蛛池模板: www.在线观看视频 | 海角社区在线登录 | 亚洲国产精品婷婷久久久久 | 99热国产在线 | 亚洲国产天堂在线观看 | 999精品视频这里只有精品 | 大吊操 | 欧美成人福利 | 久久伊人影视 | 午夜深情在线观看免费 | 四虎网站| 91爱爱网站| 亚洲 欧美 国产 综合首页 | haodiaose在线精品免费观看 | 精品久久香蕉国产线看观看麻豆 | 亚洲 欧美 国产 视频二区 | 99久女女精品视频在线观看 | 日韩成人小视频 | а天堂中文最新版在线官网视频 | 关晓彤被草 | 涩涩漫画免费 | 天天干天天日天天射天天操毛片 | 97综合| 成人青青草 | 日韩一区二区三区四区五区 | 美女污视频在线观看 | 国产精品原创永久在线观看 | 日韩欧美精品一区二区 | 免费国产高清精品一区在线 | 大胆暴露亚洲美女xxxx | 午夜国产在线 | 日韩毛片免费在线观看 | 四虎影视永久在线观看 | 日韩一级片在线免费观看 | 毛片视频网站在线观看 | 韩国禁片在线观看久 | 日本视频中文字幕 | 星星动漫在线观看免费 | 九九热精品免费观看 | 希望影院高清免费观看视频 | 私人家庭影院5577 |