區塊鏈無法擴展:至少現在不能,但有希望(三)

方案 #5

Plasma

Plasma是最近剛剛引入的,是解決區塊鏈可擴展計算問題更具希望的方案之一。

Plasma本質上是運行在根鏈(即以太坊主鏈)上的一系列智能合約。根鏈通過一種被稱為“欺詐證明”的機制來保障Plasma鏈狀態的有效性。(注:欺詐證明是一種通過數學證明來確定區塊有效性的機制)

区块链无法扩展:至少现在不能,但有希望(三)

區塊鏈被組織成一種樹狀層級結構,每個分支都是一條子鏈,包含自己的區塊鏈歷史以及可以映射-歸併(map-reducable)的計算信息。我們把這些子鏈稱為“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去中心化存儲的粗略框圖

還有跟多方案,但為了簡潔起見(這篇文章已經很長了),這裡就不討論了。

結論

這個話題極其複雜,但我希望這篇文章能夠給你一個全景的視角:為什麼區塊鏈可擴展性很重要,以及它可以如何被解決。

這無論如何都不是一個完整的列表,我將隨著研究的深入繼續跟進這個話題。我個人很懷疑可擴展性有沒有一個完美的答案...但我相信某些方法的組合可以最終解決這個問題並允許區塊鏈應用繼續向前邁進。

一如既往,如果有什麼錯誤請不吝指正,或者在留言中發起一個(理性的)討論。

祝在區塊鏈中玩得開心!

------

風險警示:藍狐所有文章都不構成投資推薦,投資有風險,建議對項目進行深入考察,慎重做好自己的投資決策。

想要深入瞭解區塊鏈,長按下面二維碼關注“藍狐筆記”區塊鏈公眾號:lanhubiji 或加入知識星球:https://t.zsxq.com/iaQNnIq


分享到:


相關文章: