日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 物聯(lián)網 > 區(qū)塊鏈
[導讀] 任何一個曾經開發(fā)過DApp的程序員都必須考慮到當前公共區(qū)塊鏈的局限性,其中區(qū)塊鏈局限性的最重要和最明顯的問題就是有限的吞吐量,比如,每秒處理的交易量過少。為了運行一個能夠處理實際吞吐量需求的DA

任何一個曾經開發(fā)過DApp的程序員都必須考慮到當前公共區(qū)塊鏈的局限性,其中區(qū)塊鏈局限性的最重要和最明顯的問題就是有限的吞吐量,比如,每秒處理的交易量過少。為了運行一個能夠處理實際吞吐量需求的DApp,區(qū)塊鏈就必須具有可擴展性。

進行區(qū)塊鏈擴容的一個答案就是分片技術(Sharding)。分片技術承諾通過改變網絡驗證的方式來增加吞吐量。分片技術獨特于其他解決擴容的鏈上技術的關鍵特性,就是它可以進行水平擴容,也就是說,網絡的吞吐量隨著挖礦網絡的擴展而增加。這種特殊的特性可能使它成為推動區(qū)塊鏈技術被快速采用的理想技術。

本文將簡要地討論現(xiàn)有區(qū)塊鏈平臺的擴容問題,因為大多數(shù)讀者都必須要熟悉這一問題。然后我們將進一步討論分片技術和它的不同形式將如何成為一個有希望解決擴容問題的方案。這篇文章還將涉及到實現(xiàn)分片技術的一些理論基礎和其所面臨的實際挑戰(zhàn),以及我們如何能克服這些挑戰(zhàn)。

現(xiàn)有區(qū)塊鏈的擴容問題

公共區(qū)塊鏈平臺今天面臨的最大問題之一就是可擴展性。所有主流的平臺都在努力提高每秒的交易量。事實上,當今的公共以太坊網絡和比特幣網絡平均每秒可以處理7-10筆交易。這一數(shù)字遠低于像Visa這樣的集中支付處理器,后者平均每秒能處理約8000筆交易。

緩慢的交易處理造成了一個主要問題,因為大量的未完成交易阻塞了網絡,使得那些諸如實時支付這樣的應用程序很難在區(qū)塊鏈上一展身手。隨著確認支付的時間拉長,最終就會給用戶帶來諸多不便;這也是為什么像PayPal和Visa這樣的信用卡支付方式仍然更具吸引力的主要原因之一。隨著更多更復雜的DApps開始依賴于相同的一個區(qū)塊鏈網絡,遲緩的交易速度所導致的問題只會變得更加復雜。

從技術角度來看,所有區(qū)塊鏈的共識協(xié)議都有一個具有挑戰(zhàn)性的限制:網絡中的每一個完全參與的節(jié)點都必須要驗證每一筆交易,并且這些節(jié)點必須和它的其他節(jié)點保持一致,這是區(qū)塊鏈技術的組成部分,它通過創(chuàng)建分布式的賬本來保證區(qū)塊鏈的安全。

在大多數(shù)像比特幣和以太坊這樣的區(qū)塊鏈上,節(jié)點都是由公眾進行運行的。雖然去中心化的共識機制提供了一些重要的優(yōu)勢,比如容錯性、安全性、政治中立和真實性,但是這種驗證鏈的方法是以降低可擴展性為代價的。當這些公共區(qū)塊鏈變得更大時,它將需要越來越多的處理能力來驗證這些公共區(qū)塊鏈,這可能會在這些區(qū)塊鏈的網絡中造成瓶頸,從而減慢那些創(chuàng)建新應用程序的速度。

分片技術:分而治之

分片技術是一種基于數(shù)據(jù)庫分片傳統(tǒng)概念的擴容技術,它將數(shù)據(jù)庫分割成多個碎片并將這些碎片放置在不同的服務器上。在公共區(qū)塊鏈的情境中,網絡上的交易將被分成不同的碎片,其由網絡上的不同節(jié)點組成。因此,每個節(jié)點只需處理一小部分傳入的交易,并且通過與網絡上的其他節(jié)點并行處理就能完成大量的驗證工作。將網絡分割為碎片會使得更多的交易同時被處理和驗證。因此,隨著網絡的增長,區(qū)塊鏈處理越來越多的交易將成為可能。這種屬性也稱為水平擴容。

我們可以想象一下,現(xiàn)有的區(qū)塊鏈就像一條繁忙的高速公路,這條高速公路的收費站只有一個收費口。這種布局的結果將是導致交通堵塞,因為人們將排著長隊等待通過這唯一的收費站。實現(xiàn)一個基于分片技術的區(qū)塊鏈就像在高速公路上增加15或20個收費口。它將極大地提高汽車通過收費站的速度。因此,分片技術將帶來巨大的差異,并顯著提高區(qū)塊鏈的交易速度。

基于分片技術的區(qū)塊鏈的實現(xiàn)對公共區(qū)塊鏈有著不同的好處。首先,區(qū)塊鏈上處理交易的速度變成了每秒上千筆甚至更多,這改變了人們對加密貨幣作為支付方式效率的看法。改善交易吞吐量將會給去中心化的系統(tǒng)帶來使越來越多的用戶和應用程序,而這將反過來促進區(qū)塊鏈的進一步采用,也使挖礦變得更有利可圖,同時也能吸引更多加入到公共網絡上的節(jié)點,從而形成一個良性循環(huán)。

此外,分片技術可以幫助降低交易費用,因為驗證單筆交易的處理量減少了;節(jié)點可以在依然盈利運營的同時收取較小的費用。在現(xiàn)實世界中,我們將低費用與高交易處理能力結合起來,會使公共鏈將變得越來越有吸引力。這些積極的趨勢所持續(xù)的時間越長,我們就會越能看到更多的主流的加密技術和區(qū)塊鏈應用程序的出現(xiàn)。

分片技術的策略

這部分主要講的是相關的基本概念,但是我們有更細分的方法來實現(xiàn)分片策略,如網絡分片和交易分片,以及狀態(tài)分片等。通過網絡和交易分片,區(qū)塊鏈節(jié)點的網絡被分割成不同的碎片,每個碎片都能形成獨立的處理過程并在不同的交易子集上達成共識。通過這種方式,我們可以并行處理相互之間未建立連接的交易子集,通過提高數(shù)量級顯著提高交易的吞吐量。

另一方面,在當今的主流公共區(qū)塊鏈上,所有公共節(jié)點都承擔著存儲交易、智能合約和各種狀態(tài)的負擔,這可能使其在為了獲得更大的存儲空間而進行巨大的花費,以維持其在區(qū)塊鏈上的正常運轉。

為了解決這一問題,有一種可被稱為狀態(tài)分片的可行方法已被提出。這一技術的關鍵是將整個存儲區(qū)分開,讓不同的碎片存儲不同的部分;因此,每個節(jié)點只負責托管自己的分片數(shù)據(jù),而不是存儲完整的區(qū)塊鏈狀態(tài)。

分片技術的復雜性

盡管所有不同形式的分片技術都可能非常直觀,但通過對技術細節(jié)的解讀,我們可以看到這一方法的復雜性和潛在的挑戰(zhàn)。分片技術的其中一些挑戰(zhàn)是很容易克服的,而另一些則不然。一般來說,網絡和交易分片更容易實現(xiàn),而狀態(tài)分片則要復雜得多。下面,對于不同的分片機制,我們會明確地討論它們所面臨的一些挑戰(zhàn),以及它們的可行性。

網絡分片

分片的第一個也是最重要的挑戰(zhàn)是創(chuàng)建碎片。開發(fā)者需要開發(fā)一種機制來確定哪些節(jié)點可以按照安全的方式保留在哪些碎片中,這樣就能避免那些控制大量特定碎片的人所發(fā)起的攻擊 。

打敗攻擊者的最佳方法(至少在大多數(shù)情況下)就是建立隨機性。通過利用隨機性,網絡可以隨機抽取節(jié)點形成碎片。這樣一種隨機抽樣的方式可以防止惡意節(jié)點過度填充單個碎片。

但是,我們如何建立隨機性呢?最容易獲得公共隨機性的來源是區(qū)塊,例如,交易的Merkle tree root。在區(qū)塊中所提供的隨機性是可被公開驗證的,并且可以通過隨機提取器中提取統(tǒng)一的隨機比特。

然而,簡單地使用隨機機制將節(jié)點分配給碎片仍是不夠的。我們還必須要確保網絡的一個碎片中不同成員意見的一致性。這可以通過像工作量證明這樣的共識協(xié)議來實現(xiàn)。

交易分片

交易分片可聽起來那么簡單??紤]到在一個類似于比特幣的系統(tǒng)中引入交易分片(沒有智能合同),系統(tǒng)的狀態(tài)是用UTXOs來進行定義的。我們假設網絡已經由碎片所組成,用戶發(fā)送一筆交易,每一筆交易有兩個輸入和一個輸出。那么,該筆交易將如何分配給一個碎片呢?

最直觀的方法是根據(jù)交易哈希值的最后幾位來決定碎片。例如,如果哈希值的最后一個比特是0的話,那么交易將被分配給第一個碎片,否則它被分配給第二個碎片(假設我們只有兩個碎片)。這允許我們在單個碎片中驗證交易。但是,如果用戶是惡意的,他可能會創(chuàng)建另一筆具有兩個相同輸入但不同輸出的交易——是的,就是一個雙花交易。第二筆交易將有一個不同的哈希值,因此,這兩筆交易就可能形成不同的碎片。然后,每個碎片將分別驗證接收到的交易,同時忽略在另一個碎片中驗證的雙花交易。

為了防止雙花問題,在驗證過程中,碎片將不得不進行相互通信。事實上,由于雙花交易可能會在任何碎片中出現(xiàn),因此特定碎片所接收到的交易將不得不與其它的碎片進行通信。而實際上,這種相互之間的通信可能會破壞交易分片的整個目的。

另一方面,當我們有一個基于賬戶的系統(tǒng)(沒有智能合約)時,問題就簡單得多了。每一筆交易將會有一個發(fā)送者的地址,然后系統(tǒng)可以根據(jù)發(fā)送者的地址分配一個碎片。這確保了兩筆雙花交易將在相同的碎片中得到驗證,因此系統(tǒng)可以很容易地檢測到雙花交易,而不需要進行任何跨碎片的通信。

狀態(tài)分片

狀態(tài)分片帶來了新的挑戰(zhàn)。事實上,狀態(tài)分片是迄今為止最具挑戰(zhàn)性的分片技術提案。

繼續(xù)使用我們的基于賬戶的模型(我們暫時不在我們的例子中引入智能合約),在一個狀態(tài)分片的區(qū)塊鏈中,一個特定的碎片只會保留一部分狀態(tài)。例如,如果我們有兩個碎片和兩個用戶帳戶,分別為Alice和Bob,那么每個碎片將保留一個用戶的余額。

假設Alice創(chuàng)建了一筆交易,她將支付Bob一筆錢。這筆交易將由第一個碎片進行處理,一旦該筆交易被驗證,關于Bob的新余額的信息就必須與他所在的碎片進行共享。如果兩個受歡迎的帳戶由不同的碎片進行處理,那么這可能需要進行頻繁的跨碎片通信和狀態(tài)交換。確??缢槠ㄐ挪粫^狀態(tài)分片的性能收益仍然是一個值得公開的研究問題。

減少跨碎片通信開銷的一種可能方法,是限制用戶進行跨碎片交易。以我們上面的例子來說,這就意味著系統(tǒng)不允許Alice直接與Bob進行交易。如果Alice必須與Bob交易的話,她將不得不在那塊碎片中占有一個帳戶。雖然這確實消除了任何跨碎片通信,但它可能會限制平臺的可用性。

狀態(tài)分片的第二個挑戰(zhàn)是數(shù)據(jù)的可用性。我們可以考慮這樣一個場景,由于某種原因,一些特定的碎片遭到了攻擊而導致其脫機。由于碎片并沒有復制系統(tǒng)的全部狀態(tài),所以網絡不能再驗證那些依賴于脫機碎片的交易。因此,在這樣的情況下區(qū)塊鏈基本上是無法使用的。解決此問題的方法是維護存檔或進行節(jié)點備份,這樣就能幫助系統(tǒng)進行故障修復以及恢復那些不可用的數(shù)據(jù)。但是,這樣就使得節(jié)點將不得不存儲系統(tǒng)的整個狀態(tài),因此這還可能會引發(fā)一些中心化的風險。

我們在任何分片機制(當然不是特定于狀態(tài)分片)中需要考慮的另一個要點是,確保碎片在抵御攻擊和失敗時是具有彈性的; 網絡必須接受新的節(jié)點并以隨機的方式將這些分配給不同的碎片。換句話說,網絡必須在一段時間內進行節(jié)點的重新分配。

然而,在狀態(tài)分片的情況下,重新分配節(jié)點是非常棘手的。由于每個碎片只保留了狀態(tài)的一部分,所以在一次重新調整網絡的過程中,在同步完成前可能會出現(xiàn)導致使整個系統(tǒng)失效的問題。為了防止系統(tǒng)的中斷,我們必須對網絡進行逐步調整,以確保每個碎片在所有節(jié)點被清空前仍有足夠多的舊節(jié)點。

類似地,一旦一個新節(jié)點加入了一個碎片中,系統(tǒng)就必須確保該節(jié)點有足夠的時間與碎片狀態(tài)進行同步;否則,傳入節(jié)點將完全拒絕每一筆交易。

結論

綜上所述,分片技術是區(qū)塊鏈的一個令人興奮的技術,他讓我們看到了希望,它可以在不影響去中心化和透明度的情況下解決擴容問題。然而,毫無疑問的是,分片技術,尤其是狀態(tài)分片,在設計層面和實現(xiàn)層面都是非常困難的。

我們應該小心的處理分片技術。此外,開發(fā)者們還需要做更多的研究來確定狀態(tài)分片的可行性,因為它可能不是解決存儲問題的法寶。研究人員和開發(fā)者們正在積極尋找那些可替代的解決方案。也許,答案就在我們眼前。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉