區塊鏈無法擴充套件:至少現在不能,但有希望(三)
前言:區塊鏈要想構建Dapp生態,要想走向主流人群,優先要解決擴充套件性問題。但區塊鏈是去中心化的系統,任何節點都可以自由加入,要在多樣化的節點快速達成共識,是非常困難的事情。那麼,區塊鏈的真的無法擴充套件了嗎?本文作者Preethi Kasireddy認為,雖然現在不能,但未來有希望。
方案 #5:Plasma
Plasma是最近剛剛引入的,是解決區塊鏈可擴充套件計算問題更具希望的方案之一。
Plasma本質上是執行在根鏈(即以太坊主鏈)上的一系列智慧合約。根鏈通過一種被稱為“欺詐證明”的機制來保障Plasma鏈狀態的有效性。(注:欺詐證明是一種通過數學證明來確定區塊有效性的機制)
來源:Plasma白皮書
區塊鏈被組織成一種樹狀層級結構,每個分支都是一條子鏈,包含自己的區塊鏈歷史以及可以對映-歸併(map-reducable)的計算資訊。我們把這些子鏈稱為“Plasma區塊鏈”,它們都從屬於某一條區塊鏈。
來源:Plasma白皮書
Plasma區塊鏈不會把鏈上的內容暴露給根鏈(如以太坊)。取而代之的是,只有區塊頭的雜湊值會被提交到根鏈上,這對於驗證區塊有效性已經足夠了。
如果有一個欺詐證明被提交到了根鏈上,區塊會被回滾並且區塊建立者會被懲罰。換句話說,我們只在拜占庭條件下提交資料到根鏈。
因此,根鏈只處理從子鏈過來的少量提交,從而減少了傳輸到根鏈的資料量,使得更大數量的計算成為可能。
來源:Plasma白皮書
另外,資料只會被傳播給那些希望驗證某個特殊狀態的節點。這消除了每個節點都需要監視每條鏈的要求,使得合約的執行更加具有可擴充套件性。
它們只需要監視能影響它們經濟利益的鏈,從而強化正確行為,懲罰欺詐。欺詐證明允許任何一方舉報非法區塊,確保所有狀態轉換都是被驗證過的。
此外,如果某個特殊鏈上發生了攻擊,參與者可以快速和低成本地退出這個不可靠的子鏈。
來源:Plasma白皮書
來源:Plasma白皮書
Plasma在處理鏈下交易上也許和狀態通道的實現(例如閃電網路)有些類似。狀態通道和Plasma的主要區別是,在Plasma中,不是所有參與者都必須線上更新狀態。此外,參與者不需要把資料提交到根鏈執行和確認交易。
Plasma精巧的部分在於:像閃電網路這樣的狀態通道型別的方案可以成為快速支付的主要介面層,而Plasma通過最小根鏈狀態的提交來維護狀態的更新。
來源:Plasma白皮書
這個方案還有很多複雜的細節,我希望可以在後面的文章中繼續挖掘。
方案 #6: 鏈下計算(如TrueBit)
Truebit該方案的一個示例,使用鏈下計算在以太坊智慧合約中實現可擴充套件交易。本質上,就像狀態通道,TrueBit使用區塊鏈之外的一層來完成密集計算。
也就是說,在這個系統中,之前在鏈上執行的昂貴交易將以一種可驗證的方式在鏈下執行。它的工作流程如下:
不同於每個節點都參與,網路中一種被稱為“求解者”的特殊參與者執行智慧合約的計算,提交問題的結果並支付一定的押金。
如果求解者是正確的,將會獲得獎勵並返還押金。否則,如果求解者欺詐,押金會被沒收,任何質疑都會在區塊鏈上通過一種“驗證遊戲”來解決。
驗證遊戲的玩法如下:網路中有一些被稱為“驗證者”的參與者會在鏈下檢查求解者的工作。如果沒有驗證者發出錯誤通知,那麼系統就會接受這個結果。
如果某個驗證者質疑求解者結果的正確性,遊戲會在區塊鏈上執行很多輪來調停這個質疑,網路中擁有有限計算資源的“裁判”會裁定所有的質疑。系統架構保證裁判在鏈上完成的工作和鏈下實際執行的任務相比是微不足道的。
在遊戲結束時,如果求解者確實在欺詐,將會被揭發和懲罰。如果沒有欺詐,質疑者將會為誤報所消耗的資源支付一定的費用。
TrueBit提出的鏈下計算框架的粗略框圖
最後,為了使驗證者確信錯誤的確存在,並且值得它們花費精力去找出這些錯誤,TrueBit做了一件很有意思的事情:它偶爾會強制求解者提交錯誤的結果,並且逆轉了正常系統的激勵方式:求解者如果提交錯誤結果將會獲得獎勵,而如果提交正確結果則會受到懲罰。這保證了系統中驗證交易的驗證者總是可以獲得獎勵。
總結一下,協議允許任何人提交一個計算任務,其他任何人在完成這個任務時都可以收到獎勵,而系統的激勵結構可以保證返回結果的正確性。通過把計算和驗證過程從以太坊上轉移到一個單獨的協議中,可以擴充套件系統處理大量計算的能力且不受以太坊gas限制的約束。
其他的區塊鏈擴充套件方案
還有一些其他的有意思的方案在加密貨幣社群中浮現。這些方案不是直接為了解決擴充套件性,但它們可以很容易地間接解決一些擴充套件性問題。
權益證明
和工作量證明類似,權益證明是一種通過阻止雙花問題來支撐區塊鏈安全的共識機制。
在傳統的基於工作量證明的區塊鏈中,礦工們通過競爭解決計算密集型問題來維護區塊鏈資料的完整性,解決工作量證明數學難題可以獲得獎勵。
在這點上,它們使用CPU算力來驗證交易,CPU算力越高你能夠影響整個網路的能力佔比就越大。在權益證明中,股權持有者使用它們的“美元”(在以太坊中就是以太)而非算力進行投票。
這到底是怎麼工作的呢?
區塊鏈會持續跟蹤某些驗證節點,被稱為“驗證者”,它們必須提供安全性抵押(被稱為“作保”)以便能夠參與區塊驗證。
如果一個驗證者生產了任何被協議通過密碼學方式證明是“非法”的東西,它們的抵押和參與共識過程的特權就被沒收了。如果它們押對了共識結果,則可以賺回它們的抵押以及交易費。
事實上,驗證者押對了最終的共識就可以賺錢,而押錯了則會賠錢。可以和工作量證明作一個類比,每個礦工是在把它們的雜湊算力押注到將要被接受的區塊上。如果它們為了欺騙系統而選擇押錯,那麼它們生產的任何區塊都會變成孤塊,導致它們賠錢。
有很多種不同型別的權益證明共識演算法以及不同的給驗證者分配獎勵的機制,本文不再深入討論。
權益證明是如何改善可擴充套件性的?
一個例子是和分片一起使用。分片和工作量證明一起使用很難保證安全性。回憶一下使用分片,我們把驗證者的職責分散到了多個節點上,因此每個節點不需要處理所有工作。
然而,工作量證明被實現成了完全匿名,這會造成一個問題,即使單個分片只包含礦工的一小部分雜湊算力因而是安全的,攻擊者可以動用它們的所有算力來攻擊這個分片並質疑整個網路。例如,我們有兩個分片,A和B。
A擁有90%的雜湊算力而B擁有10%。A只需要動用它5.1%的總雜湊算力就可以對B發起攻擊(憑藉多數派51%攻擊)。
以太坊目前的權益證明提案會使這一切發生改變,因為根據它的設計驗證者們會擁有確定身份(即以太坊地址)。
知道它們的身份我們就可以解決這種型別的定向攻擊,通過從整個驗證者集合中隨機選擇一些節點來處理分片上任意給定的交易集合,從而使得攻擊者不可能對任何特定分片發起定向攻擊。
權益證明能夠改善擴充套件性(尤其是以太坊)的另一個原因是,和工作量證明給驗證區塊的礦工發放新token不同,在權益證明中,驗證者很可能只賺取交易費。因此,它們更有動力去增大區塊的“gas限制”(因為往每個區塊中打包更多交易可以賺取更多交易費),如果它們的驗證伺服器可以承受相應的負荷的話。
需要注意的是,驗證者只能把gas限制增加到某個可以被其他驗證者們承受的點上,否則它們回報會縮水因為導致了其他比較慢的驗證者們放棄同步。
區塊鏈租賃
另外一個以太坊特有的方案是“區塊鏈租賃”。區塊鏈租賃是一種通過減少儲存在網路上的資料量來幫助加快交易次數的解決方案。在以太坊上,使用者需要為計算步數、記憶體、交易日誌和持久化儲存付費。這些資源中的絕大部分都通過一種合理激勵的方式進行付費,但儲存不是這樣。
在當前系統中,使用者只為儲存的位元組數付費。然而,在現實中,我們可以論證儲存和其他資源不同,因為它被永久持久化到了區塊中。
作為替代,區塊鏈租賃提議把儲存消耗定義為“位元組x 時間”。通過這種方式,協議中內建了一種保持網路輕量化和減小交易次數的激勵。
去中心化儲存
另一種保持網路輕量化的方案是使用諸如Swarm的去中心化儲存服務。Swarm是以太坊上的一個點對點檔案共享協議,你可以把應用程式程式碼和資料從主鏈上搬移到Swarm節點中,這些節點連線著以太坊主鏈,之後會和主鏈交換這些資料。
這裡的基本前提是節點並非儲存區塊鏈上的所有東西,它們只儲存那些經常被本地請求的資料,而把其他資料通過Swarm放到“雲端”。
使用Swarm去中心化儲存的粗略框圖
還有跟多方案,但為了簡潔起見(這篇文章已經很長了),這裡就不討論了。
結論
這個話題極其複雜,但我希望這篇文章能夠給你一個全景的視角:為什麼區塊鏈可擴充套件性很重要,以及它可以如何被解決。
這無論如何都不是一個完整的列表,我將隨著研究的深入繼續跟進這個話題。我個人很懷疑可擴充套件性有沒有一個完美的答案…但我相信某些方法的組合可以最終解決這個問題並允許區塊鏈應用繼續向前邁進。
一如既往,如果有什麼錯誤請不吝指正,或者在留言中發起一個(理性的)討論。
祝在區塊鏈中玩得開心!
(本文來自於hackernoon.com,由藍狐筆記社群“鑫鑫”翻譯。)
發文時比特幣價格 ¥44997.58