區塊鏈的擴展性是限制它走向主流人羣的主要障礙。本文主要聚焦解釋側鏈模式和跨鏈模式的擴展性解決方案。它們分別是如何來解決擴展性問題的?它們又有什麼侷限?本文僅代表作者觀點。本文文作者 Dave Kajpust,來源於 medium.com,有由「Leo」翻譯。

區塊鏈的擴展性可能是當今區塊鏈領域最重要的問題。它爲去中心化應用提供了構建商業化規模的機會,提供了與中心化應用競爭的機會。不幸的是,很少有人真正懂得如何實現擴展,擴展方面也沒有很多詳細的細節解釋。

本文試圖解釋區塊鏈的擴展性問題,方式是通過對兩個不同的擴展解決方案:Cosmos 和 Plasma 進行詳細解釋。Plasma 是鏈外擴展解決方案。Cosmos 的技術堆棧則不同,它不是直接的擴展解決方案,它是跨鏈解決方案,它試圖解決很多區塊鏈的挑戰,擴展性也是其中之一。

突破擴展性

很重要的是要明白一點,提升了區塊鏈的擴展性會涉及到去中心化和安全方面的平衡。Vlad Zamfir 給「不可能三角」極佳的可視化:

Plasma 的區塊鏈擴展之路不可能三角考慮了容錯共識協議中的擴展性、去中心化和安全。只要優化了其中二個指標,另外一個就無法優化。三個指標無法同時優化。區塊鏈項目的開發者必須明智地選擇想要優化的指標

比如,比特幣爲了去中心化和安全犧牲了擴展性。這個選擇讓它從第一天開始就異常強健。比特幣表現良好。但,最近幾年開始,越來越多的團隊開始探索區塊鏈的可擴展解決方案。

接下來,通過分解爲兩個較小問題來探究擴展性。

吞吐量(TPS)

吞吐量是指在固定時間內傳輸的數據量,通常用 TPS (每秒交易量)來表示。

增加吞吐量的一個方法是增加區塊大小。然而,它確實需要更多的處理能力,因爲在相同時間內要處理更多的交易。吞吐量的增加會導致網絡更加中心化,原因是吞吐量增加會消除一些節點,這些節點無法提升必要的 CPU 處理能力。

如果我們仔細觀察比特幣和以太坊的吞吐量,可以看到它們都是高延時的網絡。下面是一些有助於它的設計選擇:

l 經過大量優化,使審查和拜占庭容錯變得昂貴

l 尤其是比特幣,開發者試圖讓運行一個全節點的成本保持在較低的水平,儘可能讓網絡保持無須許可

l 在同步模型下,它們有一個利於實時的分叉選擇規則

這些設計選擇使得兩個網絡保持了去中心化和安全,與此同時,也保持了較低的吞吐量。相比之下,很多新區塊鏈協議試圖提升吞吐量,但它們通常會犧牲安全或去中心化。

延遲(達成共識的時間)

比特幣最長鏈 POW 算法依賴於同步的假設,假設平均需要 10 分鐘才能達成共識。以太坊的平均出塊時間是在 14 秒左右。這些共識機制需要平衡很多變量,其中之一就是延遲。

我們會簡要介紹比特幣的延遲,以此來解釋網絡是如何達成共識的。如果每個比特幣區塊只有 1MB,這就確定了一個區塊的交易量上限。你可以把出塊時間從 10 分鐘降至 5 分鐘,這樣,你把吞吐量有效地提升了兩倍。但是,這會導致出現更多孤塊。

10 分鐘出塊可以提供足夠的時間來向網絡的所有節點廣播新產生的區塊。選擇這個區塊時間,是因爲網絡的優點是儘可能快地將新區塊廣播到其他節點。這降低了同時廣播兩個有效區塊的可能,否則容易導致分叉。它還允許礦工儘快開始挖新區塊,而不是在一條舊鏈上浪費挖礦資源。

接下來,我們會闡述 Plasma 擴展的技術路線,它會爲去中心化網絡增加什麼能力。

Plasma

Plasma 於 2017 年 8 月由 Joseph Poon 和 Vitalk Buterin 首次提出。它聚焦於提供更高的擴展性。它通過把交易轉移到更快更少擁堵的側鏈來完成這一個目標。側鏈的安全由底層根鏈來保障,一旦 Plasma 用戶發覺惡意的節點行爲,他們可以退出側鏈。

這是 Layer 2 的解決方案,可以提高擴展性,潛在的 tps 可達到 1000 以上。

Plasma 是如何工作的

首先,我們需要定義 Plasma 是什麼。有三種不同的 Plasma 概念經常被提及:

l 最初白皮書中闡釋的 Plasma

l 最小可行的 Plasma (MVP)

l Plasma 現金

l 還有其他 Plasma,比如 Plasma Debit,其他可行的 Plasma,這也是目前活躍的設計領域

Plasma 使用密碼學和博弈理論,目的是爲了允許個人能夠在 Plasma 區塊鏈上進行可靠的交易。它不應該被視爲單一的規格,比如以太坊黃皮書。Plasma 應該被看作爲一組設計原則,它可以讓你構建你的大規模可擴展的去中心化應用。

Plasma 背後的主要設計原則是保證用戶具有與主鏈同樣水平的安全,與此同時,它還可以提供遠高於主鏈吞吐量的側鏈。如果用戶發覺在 Plasma 鏈上的任何惡意行爲,他們可以離開 Plasma 鏈,並在主鏈上恢復資產。

目前大多數 Plasma 設計都有一個驗證者。驗證者可以審查在 Plasma 鏈上的用戶,但用戶能夠退出側鏈並恢復其資產。通過這樣的擴展,Plasma 鏈跟主鏈相關聯,獲得抗審查能力。驗證者失去審查的動力,因爲最終他們會在主鏈接受挑戰。由於這種隱含的信任,Plasma 的設計允許它擴展到 1000tps。

爲了比較,像比特幣這樣的網絡具有抗審查能力,因爲 1000 個節點很難串通。但有的區塊鏈可以有更少的節點,比如 EOS 區塊鏈。EOS 只有 21 個區塊生產者,串通和審查 EOS 賬戶變得相對容易。

現在,讓我們看看初始白皮書中的 Plasma。

白皮書上的 Plasma

最初的白皮書上把 Plasma 描述爲一種擴展設計,試圖把區塊鏈擴展到每秒數千次狀態更新。它發佈之時,還沒有實施。但它是一個催化劑,引發出更多的研究。

爲了達成目標,有一個 Plasma 智能合約存儲在以太坊主網。從主網角度,這個智能合約並無特殊,也不用對以太坊核心協議做任何升級。

Plasma 智能合約基本上將整個子鏈連接到主網,充當橋樑作用。通過提交最新梅克爾證明,子鏈的每個區塊都記錄在主網的 Plasma 智能合約上,這在之後用來驗證子鏈上的數據。這可在子鏈上實現 1000tps,而只需將單個區塊哈希提交到主鏈。

Plasma 的區塊鏈擴展之路Plasma 組成區塊鏈樹。區塊承諾向下流動,並且可向任何父鏈提交退出,最終提交到根鏈。這個案例只有三條鏈的深度。只有一個梅克爾證明提交到了每個父鏈,顯著增加了交易能力

在 Plasma 鏈上的每個交易都要求用戶簽名確認,確認他們在區塊中看到了交易,並且交易已經被包含在主鏈。然後,確認將被簽名並且包含在另外一個區塊中,證明雙方已有數據可用性。這稱之爲「確認簽名」,並且要求有原始交易的最終性。

確認簽名允許保證雙方都已經看到交易,並且沒有信息被扣壓。然而,數據被 Plasma 子鏈驗證者扣壓是可能的,這要求用戶定期在線。如果出現這樣的行爲,所有的利益相關者必須能夠「大規模退出」子鏈。關於 Plasma 子鏈的大規模退出,還沒有詳細的描述,我們會在此處闡釋。

當利益相關者注意到子鏈的惡意行爲,開始退出 Plasma 區塊鏈,停止交易。這個過程設計的目標是,將質押在主網 Plasma 智能合約上的 Ether 退還給真正的所有者。要達成這一點,所有 Plasma 側鏈 token 將兌換爲原始質押存款,正是這些質押資金在以太坊主網上創建了它們。

然而,這個退出過程涉及到每個 Plasma 賬戶執行至少一次主網交易。這會變得很貴。一個有 10,000 個賬戶的 Plasma 鏈要耗費很長時間達成大規模退出,同時耗費大量 gas。

毋庸置疑,這就是 Plasma 設計領域變得有意思的地方。在 Plasma 設計的落地方面,還有很多懸而未決的問題。

作爲第一步,Vitalik 提出了一個簡單的 Plasma 可行方案,稱爲最小可行 Plasma。

最小可行 Plasma (MVP)

最小可行 MVP 是 Plasma 的精簡版。它符合 Plasma 鏈的設計要求,同時足夠簡單,可以落地實施。Plasma 智能合約包含如下數據結構:

l 智能合約的所有者

l Plasma 區塊列表。每個區塊有梅克爾根以及提交梅克爾根的時間。

l UTXO (未消費交易輸出)位置

有了這些數據結構,我們還需要根據交易排序執行優先退出。這也意味着,在大規模退出發生時,UTXO 交易將在主網上重放,重放會根據它們在 Plasma 鏈出現的順序進行,直到所有資金都返還。這會確保沒有利益相關者可以跳出僞造區塊並在退出時候偷走 Ether。

在 MVP 中有三個利益相關者:

l 以太坊主網礦工

l Plasma 驗證者,稱爲「操作者」(他們維持 Plasma 子鏈的運行,以獲得費用)

l 在主網 Plasma 智能合約上抵押 Ether 的用戶

通過這種 MVP 的設置,我們只是進行簡單的 token 轉移,並不具備通用智能合約能力。相反,我們獲得強大的 token 安全保證。token 不能被雙花,不能被扣壓,並且總是可以通過 Plasma 退出回兌到根鏈。

我們甚至可以運行一個 MVP 鏈,只有一個 POA Plasma 驗證者,並保證安全退出。MVP 的設計考慮了 ERC-20 的 Token。未來,Plasma Cash 的設計專門考慮了不可兌換 Token,比如 ERC-721 token 標準。

Plasma Cash (現金)

不可兌換的 token 類似於你口袋中的現金。你口袋中的每張美元鈔票都有一個系列號,這讓它獨一無二,每個 ERC-721token 也有唯一的標識符。沒有任何兩個 ERC-721token 是相同的。

這意味着,在存儲數據的梅克爾樹中,只有一個 token 有效的位置。任何其他人試圖把該 token 退回到主鏈都很容易受到 token 真正所有者的挑戰。

爲了激勵良好行爲,每個 Plasma 鏈用戶在加入時都會提出退出存款。如果他們試圖退出不屬於自己的資金,一旦被發現,他們會失去所有的存款,轉給挑戰者。

Plasma Cash 所有者只需跟蹤他們獨特代幣的數據,而不是整個區塊鏈狀態。相反,MVP 則要求所有者觀察區塊鏈的完整狀態。兩種設計都要求用戶在檢查點期間至少登錄一次,以確保沒有其他利益相關者試圖錯誤地退出其 token。

總的來說,Plasma Cash 對需要簡單 UTXO 狀態的高吞吐量應用來說,具有良好的前景。

Plasma 如何實現應用的擴展?

可以想到一些應用,它們有高吞吐量和 UTXO 狀態,比如去中心化交易所和通用支付。

去中心化交易所

多年來,中心化交易所被黑客攻擊過很多次。去中心化交易所可以提供解決這個問題的方案。Plasma 具有高吞吐量,這讓它成爲構建去中心化交易所的有力競爭者,這些去中心化交易所可以連接到主鏈,由此移除對中心化交易所的需求。

目前也有去中心化交易所,比如 IDEX,也有去中心化交易協議,比如 0X,它們目前受制於以太坊吞吐量。目前,去中心化交易所根本不可能跟傳統的中心化交易所競爭。

然而,構建一個 Plasma 去中心化交易所並不是簡單。去中心化交易所,比如 IDEX,它在以太坊主網有很多智能合約和狀態對象,這允許它運行,並且爲了構建一個能運轉的 DEX 很可能需要智能合約的支持。

目前,Plasma 相關的大多數想法都集中在有簡單 UTXO 狀態的高吞吐量應用上。因此 0X 和 IDEX 交易所還無法在 Plasma 上運行,直到它能支持更多複雜狀態對象進行大規模退出。

特別是,一個交易所需要一個訂單簿以最好的價格來匹配訂單。它也需要做市商、交易者來給平臺提供流動性,且還涉及到多種 token,需要數百萬數千萬美元。此外,交易者希望可以從平臺中快速提款,這也受制於 Plasma 挑戰期的侷限。

支付

支付更適合 Plasma MVP 和 Plasma Cash。少於一美分的微支付可以很容易換手 1000 次,費用不多。但要記住,在 Plasma,每次轉移的速度仍受限於根鏈的最終時間。

除了微支付,任何一羣用戶之間,如果需要經常發生重複和昂貴的以太坊主網交易,他們也可以使用 Plasma 鏈以節省費用。支付是區塊鏈可擴展性設計的重要領域。如果 Plasma 可以解決這個問題,它會是一個很大的成就。如果我們希望用區塊鏈來處理購買咖啡這樣的微支付場景,我們必須找到一種可擴展的方法。

Plasma 的侷限

截止到現在,想讓 Plasma 鏈擁有完整的 EVM 能力是不現實的,也不是正確方法。大多數研究聚焦於讓 UTXO 模型首先發揮作用。

我們必須保持簡單,其中一個理由是因爲智能合約的所有權性質。Solidity 智能合約不擅長代表所有權。這意味着 EVM dApp 的用戶會發現自己很難實現退出。一個智能合約可以包含許多不同的功能和狀態變量,這些變量由不同個人所擁有。

這會在大規模退出時帶來問題,因爲它要求保證 Plasma 鏈的安全。任何從狀態 A 到狀態 B 的有效狀態轉移將會導致任何狀態 A 的退出無效。由此,子鏈智能合約的每個單一狀態都需要有明確的所有權,否則,大規模退出總是可以被阻止的。

在 Plasma 鏈上擁有複雜智能合約是可能的,但它們必須是受約束的智能合約。儘管如此,隨着研究的深入,Plasma 智能合約應該最終支持更復雜狀態。它們需要經過深思熟慮的機制設計才能實現複雜的大規模退出功能。

大規模退出非常關鍵,因爲即使你設計了一個非常安全的 Plasma 鏈,仍然有必要存在一個高效的方法來處理從 Plasma 到主鏈的交易。大規模退出如果花費太長時間或太昂貴,都將是不可接受的,因爲它會把用戶的資金置於危險之中。

白皮書中描繪的確認簽名也是有限的。它們要求雙方發送確認交易以確保最終性。這樣的用戶體驗很糟糕,因爲每一方不得不提交另一個確認交易以確認原始交易。然而,Plasma Cash 和更多可行的 Plasma 目標在於解決這個問題。

對於 Plasma 退出,它也要求用戶每個檢查點在線一次,這是一種設計約束,它可能會讓一部分用戶不想忍受麻煩。