【深度報告】技術(shù)洞察系列之區(qū)塊鏈拓?fù)浣Y(jié)構(gòu)區(qū)塊鏈
區(qū)塊鏈技術(shù)正是提出一種分布式賬本的架構(gòu),把第三方機(jī)構(gòu)從系統(tǒng)中剔除,讓人與人之間可以直接進(jìn)行交易。區(qū)塊鏈的解決思路是讓所有用戶都擁有一本賬本,所有用戶都參與到記賬的過程中。然而這樣也帶來一個問題:如何確保所有用戶擁有的是同一本賬本?亦即:如何保證賬本信息的一致性?
在傳統(tǒng)的賬本系統(tǒng)中,所有用戶的交易信息都寫在同一個賬本上,由此來保證用戶之間不出現(xiàn)沖突的交易信息。而這個唯一賬本的記錄、檢索一般交由可信任的第三方機(jī)構(gòu)進(jìn)行(如銀行)。在這一系統(tǒng)中,所有用戶向第三方機(jī)構(gòu)支付信任,由機(jī)構(gòu)保證賬本不被惡意篡改。這是一種中心化的體系,好處是機(jī)構(gòu)可以集中處理大量交易信息,但同時所有交易行為都不得不經(jīng)過機(jī)構(gòu)的處理,用戶在一定程度上將受到機(jī)構(gòu)的控制。
區(qū)塊鏈技術(shù)正是提出一種分布式賬本的架構(gòu),把第三方機(jī)構(gòu)從系統(tǒng)中剔除,讓人與人之間可以直接進(jìn)行交易。區(qū)塊鏈的解決思路是讓所有用戶都擁有一本賬本,所有用戶都參與到記賬的過程中。然而這樣也帶來一個問題:如何確保所有用戶擁有的是同一本賬本?亦即:如何保證賬本信息的一致性?
在區(qū)塊鏈中,交易信息是向全網(wǎng)絡(luò)廣播的,每位用戶都能接收到交易信息。由此,賬本信息的一致性問題,實(shí)際上變成一種“唯一性”問題:只要設(shè)計一種規(guī)則,確保只有唯一一種交易信息能通過篩選保留下來,即可保證各個用戶記錄下來的是同一種信息。
在區(qū)塊鏈,“區(qū)塊”和“鏈”就是實(shí)現(xiàn)這種唯一性的數(shù)據(jù)結(jié)構(gòu)。
區(qū)塊存儲的是一段時間內(nèi)的交易信息,實(shí)際上是對交易信息的一種封裝;在比特幣里,一個區(qū)塊可存儲約3000筆交易信息。一旦這個區(qū)塊被確認(rèn),3000筆交易就一同被確認(rèn)了。如果不對交易信息進(jìn)行封裝,每次確認(rèn)一筆交易,則需要高頻的確認(rèn)操作,效率降低。同時,每個區(qū)塊又包含了上個區(qū)塊的地址信息,環(huán)環(huán)相扣,形成從最新區(qū)塊到創(chuàng)世區(qū)塊的一條“鏈”。新區(qū)塊的產(chǎn)生有多種方案(如PoW、PoS、DPoS等),分叉的情況時有出現(xiàn);而大部分區(qū)塊鏈項(xiàng)目都共同遵循“選最長鏈作為主鏈”的規(guī)則。這一規(guī)則可保證即便出現(xiàn)分叉,在一定時間后,總能有一條鏈條是公認(rèn)的“主鏈”。(如圖1)
圖1 “選最長鏈作為主鏈”規(guī)則
由于最長鏈?zhǔn)俏ㄒ坏模杏脩舳紝淹绘湕l記錄在本地數(shù)據(jù)庫上,這就保證了賬本的唯一性,也就解決了賬本一致性的問題。
此外,鏈?zhǔn)浇Y(jié)構(gòu)還帶來一個好處。所有的區(qū)塊都通過“鏈”聯(lián)結(jié)在一起,形成了一個緊密的整體。如果黑客想要篡改某個區(qū)塊的內(nèi)容,則無法直接插入某個新的區(qū)塊,而需要從此往后的整個鏈條重新替換,代價高昂。由此可避免篡改交易等攻擊。
然而這種數(shù)據(jù)結(jié)構(gòu)仍然存在問題:吞吐量低。在區(qū)塊鏈中,為了避免存在沖突的交易信息(不允許持續(xù)的分叉),也為了保證賬本的一致性(需選出唯一的鏈),區(qū)塊鏈采用的是最長單鏈結(jié)構(gòu)。由于每次只能新增一個區(qū)塊,區(qū)塊信息的傳播、確認(rèn)需要時間,而區(qū)塊的容量有限,這就使得一段時間內(nèi),能記錄的交易信息存在上限。可見,“吞吐量低”實(shí)際上是滿足一致性要求而付出的代價。目前比特幣區(qū)塊鏈平均一秒只能處理約7筆交易,與中心化的電子支付系統(tǒng)存在較大差距。
為解決吞吐量問題(可拓展性問題),一個重要的思路是讓多筆交易可以同時并行處理。側(cè)鏈技術(shù)通過對主鏈上的款項(xiàng)進(jìn)行鎖定、解鎖的操作,可把不同區(qū)塊鏈進(jìn)行聯(lián)結(jié)(如圖2),擴(kuò)充了交易處理的空間。而分片的思路則是把用戶劃分為不同的片區(qū),每個片區(qū)里的交易可以獨(dú)立驗(yàn)證、并行進(jìn)行,而跨片區(qū)之間的交易則需進(jìn)行額外處理(如圖3)。在側(cè)鏈、分片技術(shù)中仍存在主鏈,兩者均是通過限制交易的靈活性(如款項(xiàng)被凍結(jié)、交易的對象受限等),在保障安全的前提下,滿足賬本的一致性。
圖2 側(cè)鏈?zhǔn)疽鈭D
圖3 分片技術(shù)示意圖
而另一方面,DAG(有向無環(huán)圖)則是對另一種數(shù)據(jù)結(jié)構(gòu)形式的探索。如果說區(qū)塊鏈?zhǔn)且粋€同步系統(tǒng)(一段時間內(nèi)所有用戶共同確認(rèn)一個新區(qū)塊),DAG則是一個異步系統(tǒng)。在DAG中,區(qū)塊可以隨時產(chǎn)生,而一個區(qū)塊與多個父區(qū)塊進(jìn)行連接(如圖4)。這樣一來,所有人可以隨時記賬,交易信息的記錄速度大為提高。
圖4 DAG示意圖
然而由于多個區(qū)塊同時產(chǎn)生,且均有效,DAG無法以“唯一最長鏈”來保證一致性。在這方面,有的項(xiàng)目以“歷時性”來保證DAG上賬本的一致性。具體而言,在DAG中一個新區(qū)塊將隨機(jī)選擇兩個次新的區(qū)塊進(jìn)行連接,同時對與之相連的所有區(qū)塊進(jìn)行交易信息的驗(yàn)證。經(jīng)歷了多次驗(yàn)證的區(qū)塊,其交易內(nèi)容存在沖突的可能性很低,可被認(rèn)為是已確認(rèn)的交易信息。這一方案里,一致性的驗(yàn)證依賴于區(qū)塊網(wǎng)絡(luò)的延伸和增長。
其他項(xiàng)目則以“全連接”來保證賬本一致,即每個新的區(qū)塊都與之前所有區(qū)塊相連,并驗(yàn)證此前的所有交易信息。還有項(xiàng)目以“次序”來保證一致性,由區(qū)塊遞歸投票來確認(rèn)新的區(qū)塊等。
DAG帶來吞吐量的提高,然而“一致性”始終是個有待解決的復(fù)雜問題,目前問題的解決都需要付出一些代價:可能是交易信息的確切驗(yàn)證時間有所延誤;也可能是節(jié)點(diǎn)與節(jié)點(diǎn)之間需要進(jìn)行大量的網(wǎng)絡(luò)通訊,使得實(shí)際交易速度仍有待觀察。
歸根到底,分布式賬本的“一致性”問題,是一個平衡的問題。不妨說“一致性”是一個系統(tǒng)目標(biāo),而達(dá)成這一目標(biāo)需要付出相應(yīng)的資源:因此或犧牲交易速度,或限制交易的靈活性,或延后確認(rèn)時間,或提高對全網(wǎng)的傳輸要求,都是不同系統(tǒng)條件下進(jìn)行的適應(yīng)性選擇。相信上述提及的不同技術(shù),將在不同的應(yīng)用場景下,得到進(jìn)一步的探索和驗(yàn)證。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。