區塊鏈領域有一個普遍的思路:區塊鏈應該最大程度上簡單,因為它們是很難改變的基礎架構,一旦破壞會造成巨大危害,而更複雜的功能應該在上層構建,以layer 2協議的形式:狀態通道、Plasma、Rollup等。
layer 2是進行持續創新的地方,而layer 1應該保持穩定性和進行維護,只有在緊急情況下才進行大的更改(例如防止基礎層的加密被量子計算機攻破,這種情況下進行一次性重大的更改是可以的)
這種分離層的想法是非常好的主意,從長期看,我強烈支持這種想法。然而,這種想法忽略了一個重要的觀點:儘管layer 1無法很強大,但是由於更大的能力意味著更大的複雜性並因此帶來更大的脆弱性,因此layer 1也必須足夠強大,以使得構建其上的layer 2協議首先是可能的。
一旦layer 1協議達到一定級別的功能,我將其稱為“功能逃逸速度”,那麼到了這個時候,你可以在這個基礎上做其他所有事情,而無須改變基礎層。但是,如果layer 1功能不夠強大,那麼,你可以談論填補與layer 2系統的空隙,但現實是,如果不再次引入layer 1試圖擺脫的整套信任假設,實際上就沒有辦法構建這些系統。
本文會討論構成“功能逃逸速度”的最小功能的一些含義。
一種程式語言
必須有可能在鏈上執行定制的用戶生成的腳本。這種程式語言可以很簡單,且實際上並不需要高性能,但它至少需要擁有這種級別的功能:能夠驗證可能需要驗證的任意內容。這很重要,因為要構建於基礎層之上的layer 2協議需要某種驗證邏輯,這種驗證邏輯必須以某種方式由區塊鏈執行。
你可能聽說過圖靈完備性。對這個術語,“外行人的直覺”是如果一種程式語言是圖靈完備的,那麼它可以做計算機理論上可以做的任何事情。一種使用圖靈完備語言編程的程式可以翻譯成任何其他圖靈完備語言的等效程序。但是,事實證明,我們只需要更輕一些的東西:可以將程式限制為無循環,或者可以保證程序在特定數量的步驟之後終止。
豐富的狀態(Rich Statefulness)
不僅存在一種程式語言重要,而且該程式語言如何精確地集成到區塊鏈中也很重要。在可集成語言的更受限的方法中,如果它用於純粹交易驗證:當你向某個地址發送代幣,該地址代表了計算機程序P,P可用於驗證從這個地址發送代幣的交易。
也就是說,如果你發送的哈希值為h的交易,你提供的簽名為S,那麼區塊鏈會運行P(h,S),如果輸出為TRUE,那麼交易是有效的。通常,P是用於加密簽名方案的驗證器,但它可以執行更加複雜的操作。尤其需要注意的是,在這一模型中,P並不能訪問交易的目的地。
但是,這種“純函數”的方法還不夠。這是因為這種純粹基於函數的方法並不足以執行人們實際想實現的多種類型的layer 2協議。它可以處理通道(以及基於通道的系統,如閃電網絡),但它無法實現具有強大屬性的其他擴展性技術,它也無法用於引導出具有更複雜狀態概念的系統,等等。
為了簡單說明純函數範式無法做什麼,可以考慮一下具有如下功能的儲蓄賬戶:存在一個加密密鑰k,k可以發起提款,且如果發起了提款,在接下來的24小時內使用相同的密鑰k可以取消提款。如果提款在24小時內仍未取消,則任何人都可以“戳”該賬戶以完成提款。
這麼做的目的是,如果密鑰被盜,賬戶持有人可以防止偷竊者提取資金。偷竊者當然可以阻止合法持有人獲得資金,但這種攻擊對於偷竊者來說將是無利可圖的,因此他們可能不會去幹這種事。
遺憾的是,如果僅用純函數這種技術無法實現。問題是:需要用某種方式將代幣從“正常”狀態轉變為“等待提款”狀態。但程序P無法訪問目標地。因此,任何可以授權將代幣移至等待提款狀態的交易也可以授權立即偷取這些代幣;程序P無法分辨出其中差異。
這種改變代幣狀態而無須完全釋放它們的能力,對很多應用來說都很重要,其中也包括layer 2協議。Plasma自身就符合這種“授權,最終確定,取消”的範式:從Plasma退出必須被批准,然後有7天時間的挑戰期,在這個挑戰期內,如果能提供正確的證據,退出可能被取消。
Rollup也需要這種屬性:在rollup內的代幣必須由程序控制,該程序持續跟踪狀態根R,並且如果某驗證器P(R, R’,數據)返回TURE,則將R更改為R’ ,但在這種情況下,它僅僅將狀態改變為R’,它並不釋放代幣。
授權狀態改變而無須完全釋放一個賬戶中的所有代幣,這種能力我稱之為“豐富的有狀態性”。它可以在很多方面實現,有些基於UTXO的,但如果沒有它,區塊鏈不足以實現大多數layer 2協議,而無須包含信任假設(例如,一組人得到集體信任執行這些豐富狀態的程序) 。專欄作者註:也就是無須信任第三方
請注意:是的,我知道如果P可以訪問h,那麼,你可以將目標地址包括進來作為S的一部分,然後對照h進行檢查,並以此方式來限制狀態改變。但是,可能有一種程式語言其資源太有限或受限於實際上的執行。讓人吃驚的是,在區塊鏈腳本語言中通常確實如此。專欄作者註:這裡的h是指哈希值,S是指簽名
足夠的數據可擴展性和低延遲
事實證明,Plasma和通道以及其他完全鏈下的layer 2協議有一些根本性的弱點,使得它們無法完全複製layer 1的能力。
我在這裡詳細探討。總結來說,這些協議需要一種判斷情形的方法,其中一些參與方惡意地不提供他們承諾提供的數據,且因為數據發布並非是全局可驗證的,這些判斷遊戲在博弈論上看是不穩定的(你無法知道什麼時候發布數據,除非你已經自行下載)。
通道和Plasma巧妙地通過添加額外假設來解決這種不穩定性,特別是假定對於每個狀態,都有一個參與者對該狀態不被錯誤修改感興趣(通常是因為它代表了其擁有的代幣),因此,為其自身利益可以被信任。但是,這遠非通用。例如,像Uniswap這樣的系統,有一個大型的“中央”合約,它不歸任何人所有,因此,它們無法有效地受到這種範式的保護。
有一種方法可以解決這個問題,其中layer 2協議在鏈上發布非常小量的數據,但完全在鏈下進行計算。如果數據可以確保可用,那麼,鏈外進行計算是可行的,因為判斷誰正確計算誰沒有正確計算的遊戲在博弈論上是穩定的(或者可以完全由SNARKs或STARKs取代)。
這是ZK rollup和optimistic rollup背後的邏輯。如果區塊鏈允許發布並確保合理的大量數據的可用性,即使其計算能力非常有限,那麼,區塊鏈也能支持這些layer 2協議,並實現高水平的可擴展性和功能。
區塊鏈需要處理和確保多少數據?好吧。這取決於你想要多少TPS。通過rollup,你可以將大多數活動壓縮至每個交易大約10-20字節,因此,1kb/秒,大約可以有50-100的TPS,1MB/秒大約50,000-100,000的TPS,以此類推。
幸運的是,互聯網帶寬持續快速增長,並且在計算方面並沒有看到摩爾定律的減速,因此,在不增加計算負載的情況下增加數據的可擴展性,這對於區塊鏈來說,是非常可行的路徑。
請注意,不僅數據容量很重要,數據延遲也重要,也就是具有低區塊時間。Layer 2協議,如rollup(或就此而言,Plasma)只是當數據實際發佈到鏈上時才給予任何安全性保證。因此,數據被可靠地包含在鏈上(理想情況下是“實現最終性”)所耗費的時間是指當Alice向Bob發送支付款項和Bob確信支付被包含進去之間所花費的時間。
基礎層的區塊時間設置了任何內容的延遲時間,這些內容的確認依賴於其被包含進基礎層。可以用鏈上安全存款(也稱為“債券”)來解決此問題,其代價是資本效率低下,這種方式本質上不完善,因為惡意行為者可以通過犧牲一個存款質押欺騙無數人。
結論
“保持layer 1簡單,在layer 2上彌補”並不是解決區塊鏈可擴展性和功能性問題的通用答案。因為它沒有考慮到layer 1區塊鏈自身必須要有足夠的可擴展性和功能性,以使得構建其上實際上成為可能(除非你所謂的“layer 2協議”只是可信的中介)。
但是,在某個點之外,任何layer 1功能確實可以在layer 2上複製,且在很多情況下,通過這樣做提高可升級性是個好想法。因此,在短期內,我們需要layer 1跟layer 2並行發展,從長遠看,我們需要更多聚焦於layer 2。
轉貼自: 動區
若喜歡本文,請關注我們的臉書 Please Like our Facebook Page: Big Data In Finance
留下你的回應
以訪客張貼回應