1. 程式人生 > >區塊鏈最大的難題和不同解決方案的剖析

區塊鏈最大的難題和不同解決方案的剖析

image

目前區塊鏈平臺最大的問題,可以用一個簡單的類比來說明:

二十一世紀初,網際網路的速度非常緩慢。當時如果你有一個部落格,使用者要訪問它既費時又費錢。人們注意到這個問題,但同時也認識到了網際網路的用處。為了解決此問題,很多人努力改進網際網路的基礎設施和設計。與此同時,人們還構建了更強大的硬體來執行這些網際網路的設施。

由於這些改進,網際網路變得更快,訪問成本變得更低。以前,開發人員們只能建立單個網頁。但現在,開發者可以在改進的基礎設施上建立像臉譜網、谷歌和Twitter這樣的網站。所有這些都是可能的,因為網際網路的速度和容量得到了極大提升。

區塊鏈技術也面臨著類似的問題——緩慢而昂貴。

許多區塊鏈公司都致力於構建可擴容的基礎設施,從而使區塊鏈平臺在未來成為主流。一旦那一天到來,人們不僅可以使用區塊鏈進行支付,還可以在其之上構建類似於谷歌和臉書的應用程式。

1

區塊鏈和擴容能力問題

image

在解釋擴容問題之前,必須要先解釋吞吐量的概念。假設你在火車站等車,每趟火車間隔一小時,只能做10個人。一旦火車滿載,第十一名乘客只能等待下一趟。與這個做類比,乘客代表交易,比特幣或以太坊這樣常見的區塊鏈平臺每秒平均可以處理大約10次交易。

image

相比之下,像VISA這樣的支付公司目前平均每秒處理5000到8000次交易。任務處理的速率稱為吞吐量。與Visa等支付平臺相比,區塊鏈平臺目前的吞吐量非常低。

image

現在假設你在同一個火車站,但這次還有另外一百人個想坐這列火車。火車來了,售票員看了看人群,說:“付錢最多的10個人可以上火車。”你因為趕時間,所以你就付了一大筆錢買票上火車。

由於區塊鏈平臺的吞吐量低,交易費用不斷上升。例如,一筆10美元的交易在擁擠的區塊鏈平臺上很可能需要支付2美元的交易費用。因此,緩慢和高成本是網際網路上的主流交易往區塊鏈平臺上遷移的巨大障礙。

2

提升擴容能力

為了提升區塊鏈平臺的主流接受度,這些平臺需要進行擴容。區塊鏈公司們為此提出了幾種解決方案。

2.1增加區塊大小

image

第一種最直接的方法是增加區塊大小。回到火車類比,這意味著將火車的容量從10人增加到20人。這樣,火車就可以在特定時間內運送更多的乘客,減少車站的擁擠。

比特幣當前的區塊大小1MB,提高到2MB可以使其每秒處理量增加一倍。區塊越大,每秒處理量就越高。

但這在實踐中是有問題的,假設你將塊大小從1MB增加到1GB,當你建立塊時,必須將其傳送給網路中的其他人,而網路無法快速處理龐大的檔案。就像你使用電子郵件,當你上傳一個大檔案時,郵箱會不接受。這就是增加區塊大小的毛病,不能超越某個臨界點,所以這種解決方案的能力是有限的。

2.2鏈下解決方案

image

第二種可能性是鏈下解決方案,比如比特幣的閃電網路,以太坊的雷電網路,和Neo的本體網路。

在當前的情況下,每次交易處理,都必須得到網路中每個節點的驗證。(節點是執行演算法並處理交易的計算機。

例如,你想在一個月時間裡每天從一個特定的咖啡店買一杯咖啡,咖啡的價格是1美元,但在網路上每天交易1美元是非常昂貴的,你不想為1美元的交易而擁擠整個網路。因此你和咖啡館老闆簽了一個合同。合同規定,你每天都要付象徵1美元的通證作為咖啡費。你向網路傳送一筆交易來標記合同的開始,30天后再發送一筆交易來標誌該合同的結束,合同結束後,咖啡館老闆可以在網路上把這30個通證交換為30美元。

因為這些是在區塊鏈網路之外發生的私人協議,所以它們被稱為鏈下解決方案。這種交易系統的缺點是,整個過程都集中在託管這些鏈下交易的伺服器上,這些鏈下網路也是黑箱,其透明性和安全性是值得懷疑的。

2.3代理共識協議

image

目前區塊鏈網路上的處理速度是非常慢的,因為網路中的每個節點都必須參與處理。如果網路中有一千個節點,那麼一千個節點都必須參與處理網路中的每筆交易。

如果一個社群裡有1000個人,每個人都必須達成一致,過程不僅漫長,而且會非常混亂。相反,如果你從社群中選出10名代表,任命他們為社群的管理員,讓這10個人投票,達成共識會更快和更容易。

類似的,您可以委託一組節點來執行協議並在事務上達成一致,代理節點的共識將代表社群的共識。

大多數可擴容的區塊鏈專案都採用這種協議。為了進入治理聯盟,社群成員必須登記興趣並通過測試(稱為權益證明或權威證明)。如果他們成功通過,將被授予加入治理聯盟的權證並執行共識協議。

2.4分片技術

image

分片技術是一種把網路分割成碎片的鏈上擴容方案,但分片不是資料庫領域中的新概念。分片技術將大型資料庫分成更小、更快、更易於管理的部分,稱為資料碎片。

為了展示它的工作原理,現在假設你有一個包含五個步驟的問題。

image

image

想象你在一個班級裡有10個學生可以幫你這個問題,而且這個問題可以分成5個並行的步驟。於是你把班級分成5組,每組兩人,每組解決一個子任務。

image

一旦有小組完成了它的子任務,就會把資訊傳遞給老師了,老師就會彙總五個組的所有答案,並將完整的答案傳遞給所有的組。這樣,即使各個小組專注於他們的子任務時,並不知道其它組在做什麼,但最終所有的參與者都會得到答案。

在這個例子中,學生是網路上的節點。班級就是網路中所有的節點,而小組則是分片。老師則代表了目錄服務委員會(DS),而它本身就是一個分片。

image

如果把比特幣網路比作一個教室,學生們必須自己解決每一步的問題,這要花費長得多的時間,而且每個參與者的負擔也要大得多。

但是使用網路分片技術,如果你有10000個節點,通過工作量證明過程,它們將被隨機分為10組,每個組被稱為一個分片。每個分片處理一組不同的資料,並得出小組內一致同意的答案。然後,各分片將這些資料的摘要報告提交給一個名為目錄服務委員會的分片,由它來統籌不同分片的資料摘要,並將它們組合起來形成一個更大的資料集,稱為最終區塊,最終區塊的資料又會被返回所有分片。

從上面的分析可以看到,分片技術是一種去中心化的、安全的鏈上擴容方案,具有線性的擴容能力——也就是說,節點越多,得到的吞吐量就越大。

分片技術有兩種型別:網路分片和狀態分片,以太坊正在開發的技術是狀態分片。兩種技術的不同之處在於,在網路分片中,不是每個節點都必須處理每條資訊,但是每個節點都必須儲存網路中其它分片的資訊;如果使用狀態分片,每個節點都只儲存它們自己處理過的資訊子集,雖然這減少了每個節點的負擔,但分片之間的互通會變得複雜。

3

分片技術的缺點是設計和部署的複雜性

部署一個簡單版本的分片很容易,但是要正確且安全地執行很難,這就是為什麼現在很少的團隊研究它。與最簡單的解決方案相比較,增加區塊容量只需調整一個引數——區塊大小,然後吞吐量就增加了。但是當引入分片技術時,需要考慮的事情就非常多。

如何合理地劃分小組成員?如何分配任務?所有這些都給系統帶來了複雜性。但如果做得正確,系統將是分散式的、安全的,並且有線性的擴容能力。

4

寬頻和儲存容量是所有擴容方案的通病

對於比特幣和以太坊這些的區塊鏈平臺來說,這個問題還不嚴重,因為它們的吞吐量很低。比特幣和以太坊每秒處理10筆交易,按目前的速度,一年內的所有交易資料將達到幾GB。

但是,當我們每天處理數億筆交易時,資料就會爆棚。為了儲存所有這些資料,我們必須找到更好的儲存解決方案,這不是網路分片可以直接解決的。

內容來源:區塊鏈兄弟

作者:Yanting Sim

譯者:greatandrew

以下是我們的社群介紹,歡迎各種合作、交流、學習:)

image