區(qū)塊鏈分層協(xié)議體系結(jié)構(gòu)詳解
本開始閱讀本文時,我們先了解什么是抽象性:在計算機科學(xué)中,抽象化(英語:Abstraction)是將數(shù)據(jù)與程序,以它的語義來呈現(xiàn)出它的外觀,但是隱藏起它的實現(xiàn)細節(jié)。抽象化是用來減少程序的復(fù)雜度,使得程序員可以專注在處理少數(shù)重要的部份。一個電腦系統(tǒng)可以分區(qū)成幾個抽象層(AbstracTIon layer),使得程序員可以將它們分開處理。
據(jù)稱Lightning和Plasma等第2層技術(shù)“在塊鏈的可擴展性,互操作性和功能性方面取得了巨大進步”。 但是,大多數(shù)第2層項目主要關(guān)注可擴展性,偶爾也會提到互操作性。 為什么? 這不僅僅是時間或發(fā)展階段的問題。 這實際上應(yīng)該是這樣,第2層用于伸縮性而第3層用于互操作性。
擴展和互操作性是互補的,但是通過不同的協(xié)議層可以最好地解決這些問題。 為了說明這一點,我將介紹分層協(xié)議體系結(jié)構(gòu)的目的以及第1,2和3層的角色。我還將解釋分離可擴展性和互操作性如何改進兩者的解決方案,其設(shè)計與互聯(lián)網(wǎng)本身驚人地類似。
分層協(xié)議的目的
總是有可能把多個獨立的問題凝聚成一個復(fù)雜的相互依賴的解決方案。
RFC 1925:十二個網(wǎng)絡(luò)真相
互聯(lián)網(wǎng)是分層協(xié)議架構(gòu)的最佳范例,這種設(shè)計是互聯(lián)網(wǎng)增長和實用性的關(guān)鍵因素。 不同的功能部分被分成彼此構(gòu)建的單獨協(xié)議,而不是在一個單片系統(tǒng)中捆綁在一起。
例如,因特網(wǎng)協(xié)議(IP)建立在不同的底層網(wǎng)絡(luò)技術(shù)或“鏈路層”協(xié)議上,例如以太網(wǎng)和WiFi。 由于IP被設(shè)計為單獨的層,因此它不依賴于任何特定的網(wǎng)絡(luò)技術(shù),并且能夠以相同的方式在許多不同類型的有線或無線連接上工作。
分層協(xié)議體系結(jié)構(gòu)提供了許多重要的好處:
互操作性-IP通過抽象出不同的網(wǎng)絡(luò)技術(shù)來工作。只要鏈路可以發(fā)送數(shù)據(jù),IP就可以通過它進行通信。這意味著無論我們使用的是什么類型的底層網(wǎng)絡(luò),我們都可以無縫連接。
可升級性-抽象使不同的層可以單獨進化。雖然互聯(lián)網(wǎng)是在20世紀70年代建立的,但事實上,IP將不同的網(wǎng)絡(luò)技術(shù)抽象出來,使我們能夠從撥號網(wǎng)絡(luò)升級到光纖和4G鏈路。更高級別的協(xié)議不需要更改,但隨著新的網(wǎng)絡(luò)技術(shù)的發(fā)展,我們的連接速度不斷加快。
多用途的通用基礎(chǔ)設(shè)施-IP也獨立于任何特定用例,這使得相同的基礎(chǔ)設(shè)施可用于從Web到電子郵件和IP語音(VoIP)的應(yīng)用。如果互聯(lián)網(wǎng)是專門為文件傳輸而構(gòu)建的,那么我們可能需要為每個不同的用例提供完整的獨立網(wǎng)絡(luò)。相反,我們有一個可用于多種類型通信的互聯(lián)網(wǎng)。
分層是設(shè)計互聯(lián)網(wǎng)或價值互聯(lián)網(wǎng)等系統(tǒng)的重要工具,但決定哪些特征適合哪些層是最難的部分。太多的層使系統(tǒng)過于復(fù)雜,但過多的捆綁會妨礙互操作性和可升級性。
價值互聯(lián)網(wǎng)的協(xié)議棧
Interledger協(xié)議棧與Internet協(xié)議套件具有直接的并行性,這主要是因為我們發(fā)現(xiàn)將功能劃分為類似的層有助于解決各個級別的問題。在這里,我將簡要地介紹每個層,以解釋它們的角色,并展示將第3層集中在互操作性上的好處。
第1層:分類帳
區(qū)塊鏈和其他類型的分類帳就像支撐互聯(lián)網(wǎng)的物理電纜。數(shù)字通信最終通過有線和無線鏈路實現(xiàn),這些鏈路連接各個設(shè)備并在它們之間傳輸數(shù)據(jù)。同樣,分類賬是價值互聯(lián)網(wǎng)的基礎(chǔ),因為它們使兩個接受同一資產(chǎn)的人或在同一系統(tǒng)中持有賬戶進行交易。
像物理電纜一樣,分類帳和區(qū)塊鏈需要在它們之上構(gòu)建額外的協(xié)議,以方便數(shù)據(jù)或金錢的傳輸。對于區(qū)塊鏈,主要問題是在保持分散的同時,擴展事務(wù)吞吐量和降低延遲。
分類帳注定會成為性能瓶頸,因為它們在邏輯上是集中的。無論分類賬是以集中還是分散的方式維護,它都需要一個單一的、一致的、共享的賬戶和余額狀態(tài),以確保資金不能“雙花”。更新大量共享狀態(tài)總是相對昂貴且緩慢。瓶頸將是分布式賬本中的共識速度,或者是集中式分類賬中單個機器的性能。提高分類帳的可伸縮性是非常有用的,但是使用第2層協(xié)議把常見和重復(fù)的事務(wù)從主分類帳中移出將增加吞吐量并更大程度地降低延遲。
第2層:局域網(wǎng)
用于擴展區(qū)塊鏈的第2層解決方案類似于Internet堆棧的鏈路層協(xié)議,如以太網(wǎng)和WiFi。該層創(chuàng)建雙邊鏈接或局域網(wǎng)(LAN)*,允許直接連接的各方或設(shè)備在底層網(wǎng)絡(luò)上高效通信。
區(qū)塊鏈的第2層技術(shù)旨在通過使用一種程序化托管方式在底層分類賬上實現(xiàn)快速,廉價,高吞吐量的交易。此類別包括支付渠道和廣義狀態(tài)渠道等雙邊技術(shù),以及包括Lightning和Raiden,側(cè)鏈和Plasma等支付渠道網(wǎng)絡(luò)在內(nèi)的多邊解決方案。通過允許成對或較小的賬戶持有者組進行交易而不需要每次都與主分類賬交互,這些中的每一個都能夠?qū)崿F(xiàn)更快,更便宜的交易。
程序性托管
第2層解決方案的核心機制是程序化托管的一種形式。資產(chǎn)首先被放入主分類賬的持有賬戶,腳本或智能合約中。然后,兩個或更多方可以通過更新其本地狀態(tài)來執(zhí)行許多快速交易以改變托管資產(chǎn)的分配。如果當事人想要關(guān)閉他們的分類賬關(guān)系,他們會將最終狀態(tài)呈現(xiàn)給主分類賬,主分類賬檢查其有效性并相應(yīng)地分配托管資產(chǎn)。
重要的是,底層分類帳提供的功能直接決定了第2層系統(tǒng)可以包含的功能類型,因為分類帳在它們支持的程序化托管類型方面有所不同。
第2層解決方案必然與某些分類賬相關(guān)聯(lián),因為它們利用底層第1層系統(tǒng)中的特定功能。
這就是為什么Lightning是用比特幣腳本定義的,Raiden使用特定的以太坊智能合約,Plasma實現(xiàn)同樣會使用明確指定的智能合約。
Lightning可以使用比特幣(如Litecoin)的特定(SegWit支持),而raiden和plasma可以與使用以太坊虛擬機(evm)的其他區(qū)塊鏈一起工作。但是,如果二層技術(shù)試圖支持具有非常不同功能集的分類賬(例如,不使用Segwit的Lightning或僅使用比特幣腳本實現(xiàn)的Plasma),則每種二層技術(shù)都會更糟。不過,這完全沒問題!第2層擴展解決方案可以并且應(yīng)該利用基礎(chǔ)分類賬提供的每一種功能。
第1層和第2層之間的緊密連接正是為什么我們需要一個單獨的層來實現(xiàn)互操作性。真正的互操作性完全取決于抽象,并且需要最小化協(xié)議使用的功能集。互操作層期望從下面的層中獲得的功能越少,它可以連接的異構(gòu)網(wǎng)絡(luò)就越多。由于第2層解決方案可以并且應(yīng)該利用特定的第1層功能,因此我們需要一個單獨的互操作層,使用盡可能少的分類帳特定功能。
第3層:互操作性
第3層的目的是抽象出不同第1層和第2層技術(shù)之間的差異,以連接非常不同類型的網(wǎng)絡(luò)。這是Internet協(xié)議(IP)在Internet上的作用,也是Interedger協(xié)議(ILP)在Internet中的作用。
互聯(lián)網(wǎng)棧的核心協(xié)議IP,在網(wǎng)絡(luò)間路由數(shù)據(jù)包,同時抽象出底層電信技術(shù)之間的差異?;ヂ?lián)網(wǎng)之所以成功,正是因為它使用了如此干凈的抽象概念,能夠連接所有東西,從電話線(通過撥號)、蜂窩和衛(wèi)星網(wǎng)絡(luò),到專用光纖電纜-甚至信鴿。
IP需要底層網(wǎng)絡(luò)的唯一功能是發(fā)送數(shù)據(jù)的能力。它不依賴于任何附加功能,甚至不依賴于速度或可靠性。由于其簡單的抽象,IP能夠創(chuàng)建一個通用的網(wǎng)絡(luò)網(wǎng)絡(luò),如今連接了超過一半的人口。
第2層網(wǎng)絡(luò)上的最小抽象
在價值互聯(lián)網(wǎng)中,ILP對價值進行打包,就像IP對數(shù)據(jù)進行打包一樣。它在網(wǎng)絡(luò)上傳輸資金包,同時提取出資產(chǎn)和分類帳或第2層技術(shù)之間的差異。與IP一樣,ILP的核心是網(wǎng)絡(luò)不可知的包和地址格式。
ILP對底層的唯一要求是能夠發(fā)送值。它不需要任何特殊的事務(wù)類型、功能或程序托管。更快、更便宜的交易可以改善用戶體驗,但即使是它們也不是嚴格要求的。
ILP的最小抽象實現(xiàn)了與所有類型的第1層和第2層網(wǎng)絡(luò)的互操作性,包括那些設(shè)計為不可互操作的網(wǎng)絡(luò)。迄今為止,它已被用于連接比特幣閃電網(wǎng)絡(luò)、雙邊以太坊支付渠道和xrp支付渠道-三個非常不同的第2層系統(tǒng)。正在進行連接所有其他類型的第1層和第2層系統(tǒng)的工作。
第4層和第5層不是本文的重點,但您可以閱讀STREAMing Money和Data Over ILP來了解STREAM,這是受QUIC啟發(fā)的推薦的第4層傳輸協(xié)議。留意第5層的未來帖子以及基于ILP和STREAM構(gòu)建的特定于應(yīng)用程序的協(xié)議。
結(jié)論:分離伸縮性和互操作性
可擴展性和互操作性是互補的,但它們本質(zhì)上是不同類型的問題,最好由單獨的協(xié)議層來解決。Lightning和Plasma等可擴展性解決方案在充分利用其基礎(chǔ)分類賬提供的全部功能時效果最佳。相反,像Interledger這樣的互操作性協(xié)議需要最少的抽象,使它們能夠跨不同類型的底層網(wǎng)絡(luò)工作。
分離鏈路層和互操作性層的一個微妙好處是互聯(lián)網(wǎng)還在不斷持續(xù)發(fā)展?;ヂ?lián)網(wǎng)協(xié)議是為空間大小的計算機設(shè)計的,但它仍然適用于手機和物聯(lián)網(wǎng)設(shè)備。通過減少底層網(wǎng)絡(luò)所需的IP功能,它還允許在底層技術(shù)上進行顯著的技術(shù)突破。如果IP在開發(fā)時建立在網(wǎng)絡(luò)的特定特性或API之上,這是不可能的。
我們離第1層和第2層區(qū)塊鏈或分類賬系統(tǒng)的開發(fā)還差得遠。通過利用第3層來消除這些差異,我們可以構(gòu)建更好、更多的技術(shù)無關(guān)的用戶體驗,同時考慮到未來的發(fā)展,這將使價值互聯(lián)網(wǎng)更快、更便宜、更高效。
后語*關(guān)于雙邊或多邊第二層解決方案是否更好,有一個有趣的開放性問題?;ヂ?lián)網(wǎng)堆棧也存在著驚人的相似之處,互聯(lián)網(wǎng)或者是IPv6,應(yīng)該建立在雙邊鏈接上,而不是局域網(wǎng)上。