Vitalik:Layer-1短期求創新,長期求保守區塊鏈

                  區塊鏈財經 2018-09-28 18:52
                  分享到:
                  導讀

                  把更多功能整合進基礎層區塊鏈(即所謂的”Layer-1“),還是放到區塊鏈之上的協議中(即所謂的”Layer-[…]

                  把更多功能整合進基礎層區塊鏈(即所謂的”Layer-1“),還是放到區塊鏈之上的協議中(即所謂的”Layer-2“)使得創建和改進的工作無需動搖鏈本身,這是區塊鏈設計中權衡考量的重點。迄今為止,這種權衡在擴展方面的辯論中表現得最為明顯,一派支持增加區塊大小(以及分片),而另一派支持 Plasma 以及狀態通道一類的 Layer-2 解決方案;從某種程度上來說,區塊鏈治理也是如此,關于如何恢復損失/失竊資產的問題,一派主張使用the DAO 硬分叉及其普遍化方案如 EIP 867 ,而另一派傾向于 可撤回 ETH(Reversible Ether,RETH)這樣的 Layer-2 方案。那么哪一種方案更勝一籌呢?那些了解我的人,或者視我為無原則中間派的人,都知道我肯定會說,“兩相結合吧”。然而,從長期來看(in the long term),我確實認為,隨著區塊鏈變得越來越成熟, Layer-1 必將變得更穩定,而 Layer-2 將承擔起越來越多持續創新、迎接挑戰的重任。

                  個中因由說起來還真不少。第一個原因是,在 Layer-1 上尋求解決方案要求在基礎層上進行持續的協議變更,而基礎層變更需要治理,而迄今為止尚未得到證明的是:在長期中,高度“活躍”的區塊鏈治理可以持續進行且不會導致政治上的不確定性并塌縮為中心化。

                  要在別的領域找一個例子的話,考慮 Moxie Marlinspike 的文章 為 Signal 的中心化及非聯合性質辯護。一個公司,居然聲稱自己有權利為自己的關鍵業務控制一個自己生長于斯的生態系統;我們當然應該帶著懷疑主義的眼光來看待這份文件,但我們還是可以從這些爭論中受益。引用一些段落:

                  早期,我們對 Signal 做過最有爭議的事情,就是將它開發為一個非聯合服務(unfederated service)。我們開發的任何協議都不需要中心化;開發一個聯合性質的基于 Signal 協議的消息服務是完全有可能的,但我再也相信,開發一個競爭性的聯合消息服務是有可能的了。

                  以及:

                  他們的反駁是,“這很蠢哎,如果沒有由第三方定義的互操作性協議,互聯網又能走多遠呢?”我想過了。有了 IP 的第一個生產版本之后,我們一直在嘗試切換到 IP 的第二個生產版本,然而二十年來收效甚微;在 1997 年我們有了 HTTP 1.1 版,然后就被困在那里直到現在;類似的,SMTP、IRC、DNS、XMPP,無一例外都凍結在 90 年代后期。這就是我的回答,這就是互聯網走了有多遠:90 年代末,沒更多了。

                  雖然這已經將我們帶出好遠,但不可否認的是,一旦你將協議聯合化,就很難再做變更。而現在,在應用層,靜止不變的東西不能很好地適應這個生態系統不斷變化的世界……只要聯合意味著靜止而中心化意味著變化,聯合的協議就會變成需要變化的軟件客戶端中存在的麻煩,就像當前的情形一樣。

                  在這個時間點以及中期來看,很明顯的是:去中心化應用平臺、加密貨幣支付手段、身份系統、聲譽系統、去中心化交易所機制、拍賣、隱私保護方案、支持隱私保護的編程語言,以及絕大多數可以在區塊鏈上做的有趣東西,都是重要且會持續創新的領域。去中心化應用平臺通常需要不斷減少確認時間;支付手段也需要快速確認、低手續費、隱私保護以及其它內置的功能;交易所會以不同的規模出現在很多領域,包括鏈上自動做市商、高頻分批拍賣、組合拍賣等等。因此,將這些功能“整合”進基礎層區塊鏈是個壞主意,因為它會產生很高的治理成本,平臺要不斷地爭論、實現以及協調新近發現的技術進展。因為同樣的理由,聯合性的消息服務很難在不重新中心化的情況下起步,區塊鏈也需要在 適應性活躍治理(并承擔風險) 與 落后于新出現的替代方案之間作出選擇。

                  即便以太坊有限程度的應用定制功能和預編譯,也已經看到了苗頭。不到一年以前,以太坊部署了拜占庭硬分叉,引入了促進橢圓曲線運算 的操作,這些運算是環簽名、ZK-SNARK 以及其它應用為使用 alt-bn128 曲線所必需的。現在,Zcash 和其它區塊鏈都正在向 BLS-12-381 轉化,而以太坊需要再次分叉才能跟上。部分是為了避免在未來遇上類似的問題,以太坊社區正在著手將 EVM 升級為 E-WASM,一種更高效率的虛擬機,使得我們可以大幅減少包含應用定制型預編譯的需要。

                  不過,除了上述基于預期技術發展速度的考慮,還有另一種偏愛 Layer-2 解決方案的主張:有時候會存在不可避免、但又沒有全局最優解決方案的權衡。在以太坊 1.0 類型的區塊鏈中,這一點并不那么明顯,因為存在普遍有效的確定模式(例如,以太坊的基于賬戶的模式)。但是,在分片的區塊鏈中就會突然出現一個在當前的以太坊上還不存在的問題:如何跨分片交易?也就是說,假設區塊鏈狀態被劃分為 A 和 B,很少甚至沒有節點同時處理 A 和 B,那么系統該如何處理會同時影響 A 和 B 的交易呢?

                  現有的答案中包括異步的跨分片交易,這對轉移資產以及一些應用來說就足夠了,但對很多其它應用來說卻遠遠不夠。同步操作(例如:解決火車與旅館問題)可以綁定到 跨分片 yanking,不過這就要用上多輪的跨分片交互,會產生很高的延遲。我們也可以用同步執行模式來解決這個問題,但會伴隨著下列權衡:

                  • 系統在單個區塊中為同一個賬戶處理的交易不能超過 1 筆

                  • 交易必需提前聲明它會影響到的分片合地址

                  • 如果交易只被它所影響的部分分片所接受,交易失敗的風險會很高(而且依然需要支付手續費!)

                  看起來,很有可能可以開發出一個更好的方案,但會更加復雜,而且很可能會遇上現有方案所沒有的限制。我們已經知道完美是不可能的了;至少, 應用和某些類型的交互通過并行化來提高每秒吞吐量的前景,受到了Amdahl’s law 嚴格的限制。

                  那么,我們如何創建一個可以讓方案得到測試和部署的環境呢?Justin Drake 的想法提供了一個答案: Layer-2 執行引擎。 用戶可以發送資產到一個“橋接合約(Bridge Contract)”,這個合約會(使用像 交互驗證和 ZK-SNARKs 這樣間接的技術)計算一套替代性共識規則的狀態根(把它想成等價于 Layer-2 的“元協議” 如 Mastercoin/OMNI 以及比特幣區塊鏈上的 Counterparty,就除了因為這是個橋接合約,這些協議能處理由底層協議定義的“基礎賬本”上的資產),并且這個合約還能處理退出,當且僅當該替代性規則集產生了一個退出請求。

                  注意,任何人都可以在任何時候創建一個 Layer-2 執行引擎,不同的用戶可以使用不同的執行引擎,而且用戶也可以快速切換執行引擎或回到基礎層。基礎區塊鏈不再需要顧慮于智能合約執行的效率;它只需要變成一個數據供給層,附帶準圖靈完備的執行規則,使得所有 Layer-2 橋接合約都可以建構在上面,并且支持在分片間傳輸狀態的基本操作(實際上,只有同質 ETH 的跨分片轉賬是充分的,但只消少許功夫就可以支持跨分片調用,所以我們沒準可以很好地支持這些操作),但不需要更加復雜的東西。同樣需要指出的是: Layer-2 執行引擎也可以有與 Layer-1 不同的狀態管理規則,例如:沒有存儲租金;所有東西都可能丟失,因為保證這些東西的持續是特定執行引擎的用戶的責任,如果用戶們失敗了,結果就只能保存在特定執行引擎的用戶之間(譯者注:此處的意思疑為“保證注入 Layer-2 的資產可以退出到 Layer-1 是用戶而非底層的責任,如果使用 Layer-2 的用戶做不到,這些資產及其計算結果就只能保存在用戶之間,而回不到 Layer-1”)。

                  從長期來看, Layer-1 不會在所有技術改進上積極地競爭;它只會提供穩定的平臺,使得 Layer-2 的創新能夠發生。這是否意味著,比如說,分片是個壞主意,我們應該保證區塊鏈的規模和狀態足夠小,使得用了 10 年的老爺計算機,都可以處理每一個人的交易?當然不是!即便執行引擎或部分或全部轉移到 Layer-2 上,對數據排序(ordering)和可用性(usability)的共識仍然是一個高度可普遍化且必需的功能;想知道如果沒有 Layer-1 數據可用性共識時 Layer-2 執行引擎有多難弄,舉例而言,請看 Plasma 研究中遇到的 困難,以及,Plasma 自然擴展成完全通用的區塊鏈的困難(編者注:中譯本見文末超鏈接《為什么在 Plasma 上難以運行 EVM》)。并且,如果人們想要每秒輸入 100 兆字節到一個系統中,出于可用性共識的目標,我們就需要每秒能處理 100 兆字節的數據可用性共識算法。

                  此外, Layer-1 始終可以在減少延遲(Latency)上做改進;如果 Layer-1 很慢,實現極低延遲的唯一策略就是狀態通道(編者注:中譯本見文末《廣義以太坊狀態通道》),但它有較高的資本要求并且難以普遍化。狀態通道在延遲上永遠完勝 Layer-1 區塊鏈,因為狀態通道只需要一條網絡消息,但在那些狀態通道不能完美勝任的場景中, Layer-1 區塊鏈仍有潛力可以挖掘。

                  因此,另一個極端立場,即“區塊鏈基礎層可以真正絕對地最小化、既不必白費心機處理準圖靈完備的執行引擎、也不必糾結于超越單點處理能力的可擴展性”,同樣明顯是錯誤的。為使得基礎層強大到足以支持我們在上面開發應用,我們就必須有一定程度的復雜性,而當前我們連這種最低程度的復雜性也還沒有達到。我們也需要額外的復雜性,但我們應謹慎選擇以確保這些復雜性在最大程度上是通用的,而不是以那些兩年內就會因為人們失去興趣或更好的替代品出現而過氣的特定應用或技術為目標。

                  雖然在未來,基礎層仍需不斷更新,尤其是當新技術(例如:高度成熟的 STARK)使我們能夠實現比以往更強大的性能時,今天的開發者還是可以致力于讓基礎層平臺對這些潛在的提升保持最大限度的前向兼容(forward-compatible)。所以,在 Layer-1 升級和 Layer-2 升級之間保持一定的平衡以持續提升可擴展性、隱私性和多功能性,看起來仍然是對的;即便 Layer-2 將隨時間推移承擔起越來越大的創新責任。

                  2018.08.29 更新:Justin Drake 向我指出了另一個某些新功能最好在 Layer-1 上實現的理由:那些功能是公共品(Public Good),所以沒法高效或可靠地從功能專項使用費中得到投資,因此最好的方式是通過發放補貼或消耗的交易手續費中支付。一個可能的例子是安全的隨機數生成器。

                  Layer- 區塊 需要 應用 基礎
                  分享到:

                  1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
                  2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
                  3.作者投稿可能會經TMT觀察網編輯修改或補充。