|
目前的區(qū)塊練技術(shù)面臨著一個(gè)巨大的瓶頸,那就是:如何有效地提升區(qū)塊的吞吐量(TPS)。
區(qū)塊鏈的擴(kuò)展性一直是大多數(shù)公鏈發(fā)展過(guò)程中難以避開的一塊攔路石,比特幣因之有一段長(zhǎng)達(dá)三年的擴(kuò)容之爭(zhēng),以太坊一度因?yàn)橐粋(gè)小小的密碼貓游戲而長(zhǎng)時(shí)間擁堵不堪。
目前提出的問題解決思路主要有以下幾種:治標(biāo)不治本的擴(kuò)容(擴(kuò)大區(qū)塊容量)、犧牲部分去中心化的DPoS和pBFT共識(shí)機(jī)制、不同于區(qū)塊鏈的DAG、鏈下擴(kuò)容(子鏈和側(cè)鏈),以及分片。
分片(Sharding)技術(shù),被認(rèn)為是一種有效的、能夠解決區(qū)塊鏈吞吐量問題的解決方案。
一、起源
分片原本是一種數(shù)據(jù)庫(kù)分區(qū)技術(shù),能夠?qū)⒁粋(gè)大型的數(shù)據(jù)庫(kù)分割成小的數(shù)據(jù)碎片,并將這些碎片儲(chǔ)存在不同的服務(wù)器上,使其能夠更快更有效地管理數(shù)據(jù)。
而區(qū)塊鏈中的分片技術(shù),是在2015年初次提出的。當(dāng)時(shí)新加坡國(guó)立大學(xué)的一對(duì)師生,在國(guó)際頂尖安全會(huì)議CCS上發(fā)表了一篇論文《A Secure Sharding Protocol For Open Blockchains》,首次提出了區(qū)塊鏈領(lǐng)域中的分片概念。
后來(lái),這對(duì)師生發(fā)展出了第一個(gè)分片技術(shù)的落地項(xiàng)目Zilliqa,它結(jié)合pBFT和PoW共識(shí)機(jī)制,有6個(gè)分片,3600個(gè)節(jié)點(diǎn)的測(cè)試網(wǎng)絡(luò),已經(jīng)能夠達(dá)到每秒處理2800次交易的速度,是目前公鏈中處理速度最快的。
珠玉在前,很多為擴(kuò)展性煩惱不已的項(xiàng)目開始考慮將分片技術(shù)應(yīng)用在自家的區(qū)塊鏈上,比如以太坊,V神已經(jīng)打算在以太坊的區(qū)塊鏈上應(yīng)用分片技術(shù)來(lái)擴(kuò)大吞吐量了。此外,還有很多以此為核心技術(shù)的新項(xiàng)目正在出現(xiàn),當(dāng)然其中也不乏打著分片旗號(hào)掛羊頭賣狗肉的項(xiàng)目。
不過(guò),分片技術(shù)并不是那么容易掌握的。
二、分類和原理
分片技術(shù),有這么幾大類:網(wǎng)絡(luò)分片、交易分片、狀態(tài)分片。它們的基本原理,都是“化整為零,分而治之”,用多個(gè)分片同時(shí)處理不同的交易,最后匯總到主鏈上。
首先,網(wǎng)絡(luò)分片。網(wǎng)絡(luò)分片較為簡(jiǎn)單,但也最為重要,因?yàn)槠渌制瑱C(jī)制都必須建立在網(wǎng)絡(luò)分片之上。網(wǎng)絡(luò)分片首先要保證安全,預(yù)防網(wǎng)絡(luò)攻擊和惡意節(jié)點(diǎn)的干擾,隨機(jī)抽取出特定數(shù)量的節(jié)點(diǎn),創(chuàng)建成一個(gè)分片。當(dāng)形成多個(gè)分片后,分片中自行建立共識(shí),對(duì)交易進(jìn)行確認(rèn)。這些分片可以同時(shí)、平行地處理相互未建立連接的交易,提高網(wǎng)絡(luò)并發(fā)量。
Zilliqa便是運(yùn)用網(wǎng)絡(luò)分片,然后配合網(wǎng)絡(luò)分片的共識(shí)機(jī)制,即pBFT共識(shí)機(jī)制和PoW共識(shí)機(jī)制,來(lái)提升交易速度的。在其中,共識(shí)機(jī)制之所以重要,在于確認(rèn)一筆交易,使用pBFT共識(shí)機(jī)制,可以提高確認(rèn)速度;而在建立分片之前,要先對(duì)網(wǎng)絡(luò)攻擊進(jìn)行防范,Zilliqa加入PoW機(jī)制,就可以有效地阻止女巫攻擊(Sybil Attacks)和惡意節(jié)點(diǎn)的進(jìn)入。
其次是交易分片。網(wǎng)絡(luò)上創(chuàng)建好的分片處理不同的交易,劃分為不同的交易分片,交易劃分的依據(jù)可以是交易發(fā)起者的地址。
假設(shè)有人用一個(gè)地址向兩個(gè)人發(fā)起相同的交易,即所謂的“雙花”,一般情況下,這兩筆交易將被劃分到同一個(gè)分片進(jìn)行處理,之后分片能夠迅速識(shí)別出相同的發(fā)起地址,從而阻止雙重花費(fèi)。
而如果這兩筆交易被分到了不同的分片,分片中的節(jié)點(diǎn)同樣能夠檢測(cè)出來(lái),將這筆交易拒絕。不過(guò),要防止雙花,在驗(yàn)證中就需要分片之間相互通信,這樣就會(huì)出現(xiàn)跨片交易的情況,影響整個(gè)網(wǎng)絡(luò)的運(yùn)行和效益。所以,這里的分片最好采用UTXO交易模型,更加容易監(jiān)測(cè)出雙花,以保證效率。
但UTXO會(huì)對(duì)大宗交易額進(jìn)行拆分,一定程度上會(huì)影響效率。不過(guò),目前的交易分片技術(shù)已經(jīng)較為成熟,能夠允許多種共識(shí)機(jī)制運(yùn)行。
最后是狀態(tài)分片,這是最為復(fù)雜、最具有挑戰(zhàn)性的一種分片機(jī)制。狀態(tài)分片的核心在于,不同的分片能夠儲(chǔ)存不同的數(shù)據(jù),也就是說(shuō),整個(gè)儲(chǔ)存庫(kù)被分開,分別放在了不同的分片上。每個(gè)分片儲(chǔ)存自己分片中的所有數(shù)據(jù),而不是整個(gè)區(qū)塊鏈的狀態(tài)。
這一分片機(jī)制的挑戰(zhàn)在于:
首先,由于每個(gè)分片儲(chǔ)存的狀態(tài)不同,如果一筆交易的發(fā)起人和接收者處在兩個(gè)不同的分片,那么這兩個(gè)分片對(duì)于這筆交易的信息就應(yīng)該進(jìn)行共享,這樣一來(lái),跨片交易的現(xiàn)象又出現(xiàn)了,兩個(gè)分片之間又得進(jìn)行頻繁的通信和狀態(tài)互換,將會(huì)大大影響分片的效益和性能。
然后,當(dāng)分片遭到攻擊不得不進(jìn)行脫機(jī)工作,其中的交易是無(wú)法被驗(yàn)證的。要解決這個(gè)問題,就必須在每個(gè)節(jié)點(diǎn)進(jìn)行信息的存檔和備份,以幫助系統(tǒng)修復(fù)數(shù)據(jù),但這樣的話,節(jié)點(diǎn)就必須要備份整個(gè)存儲(chǔ)系統(tǒng)的狀態(tài),失去狀態(tài)分片的意義,甚至還可能具有中心化的風(fēng)險(xiǎn)。
三、優(yōu)勢(shì)與阻礙
分片技術(shù)作為能解決區(qū)塊鏈拓展性問題的新技術(shù)之一,具有非常強(qiáng)的技術(shù)優(yōu)勢(shì)和廣闊的發(fā)展前景。通過(guò)分片處理交易和數(shù)據(jù)的方式來(lái)消除區(qū)塊的擁堵,擴(kuò)大吞吐量,結(jié)合其他技術(shù)加強(qiáng)安全性和效率,進(jìn)行互補(bǔ),是目前分片技術(shù)的主要運(yùn)用趨勢(shì)。
分片中安全性和性能的平衡是一個(gè)值得重視的問題,Zilliqa經(jīng)過(guò)多次實(shí)驗(yàn),決定用600個(gè)節(jié)點(diǎn)構(gòu)建一個(gè)分片,這是因?yàn)?/span>600個(gè)節(jié)點(diǎn)能夠到達(dá)性能和安全的最佳平衡。而如果為了提高TPS一味減少節(jié)點(diǎn),對(duì)于分片的去中心化和安全性都是很不利的。
分片技術(shù)依然存在著很多難題需要解決,尤其是狀態(tài)分片,計(jì)算機(jī)技術(shù)人員尚未研究出好的解決方案。同時(shí),分片的原理不僅僅在于如何分片,更在于如何對(duì)每個(gè)分片進(jìn)行安全有效的治理,很多項(xiàng)目一味追求其中的一個(gè)方面,忽視了區(qū)塊鏈的基本治理問題,這也是需要注意的。
文章來(lái)源:BB財(cái)經(jīng)(www.bbcaijing.cn),如有侵權(quán)請(qǐng)聯(lián)系刪除!