通常來說,Layer1 特指一種可在大範圍內,尤爲特指全球範圍內達成業務一致性(或稱「共識」)的區塊鏈網絡系統。而相應地,Layer2 則是基於 Layer1 之上,在相對更小範圍達成一致性的網絡系統。典型的 Layer1 系統包括以太坊、比特幣以及 Nervos CKB 等,典型的 Layer2 協議有狀態通道、Plasma等。安全
對於 Layer2 來講,Layer1 承擔了兩個角色,首先是資產的來源,其次是仲裁的法官。Layer1 的用戶基於對 Layer2 的有限信任將部分資產轉移到 Layer2 上享受高速、低成本的服務,並在異常發生時利用 Layer1 對爭議進行仲裁。其中,咱們將區塊鏈上的資產定義爲代幣、NFT 以及其餘可明確全部權的數據或狀態信息。網絡
2018年以來,Layer2 技術的前沿技術發展迅速,各類 Layer2 方案不斷涌現。本文嘗試給出一種通用框架,對 Layer2 方案在不一樣功能點的取捨進行分析,以方便用戶在不一樣的應用場合有針對性地選擇。框架
典型的 Layer2 業務流程包括五個主要步驟:規則設置、進入、狀態遷移、退出以及挑戰與應答。分佈式
規則設置區塊鏈
在規則設置階段,參與 Layer2 業務的各方會就狀態遷移規則、挑戰應答規則進行設置。該步驟一般表現爲在 Layer1 部署一個智能合約,或者交易多方互換數字簽名。其本質在於各方提供一個不能否認的承諾(commitment),以便在挑戰與應答階段對爭議進行斷定。代理
早期的狀態通道技術一般要求預先在 Layer1 上部署一個斷定合約對規則和狀態進行約束。近期以 Counterfactual 爲表明的虛擬合約方式則僅要求參與者對規則進行鏈外簽名承認,當用戶對交易結果產生爭議時再將其部署到 Layer1 上。這種方式大幅下降了通道創建的成本,但 Plasma 類的 Layer2 協議仍然須要在 Layer1 上部署規則合約以便按期接收 Layer2 對狀態的 commitment。生命週期
進入部署
用戶的資產從 Layer1 進入到 Layer2 須要用戶觸發 Layer1 的資產鎖定動做,以肯定其不會被兩層網絡雙花。鎖定後的資產將產生資產鎖定證實,該證實在 Layer2 上被驗證後即實現了資產的進入。假設 Layer1 具有足夠的可用性和安全性,那麼資產鎖定證實的生成和內容的可靠性是無需置疑的。因此本操做的關鍵在於 Layer1 上的資產鎖定證實如何在 Layer2 達成共識。get
對於支付通道/狀態通道等點對點交易的 Layer2 協議來講,共識僅限於交易雙方或有限幾方以內(由多跳鏈接的更多參與方本質上也是兩方共識的組合),參與者願意執行進一步業務即證實對對方的資產鎖定證實達成了共識。it
對於 Plasma 等多對多交易的 Layer2 協議來講,除非全部的參與方都對某個資產鎖定證實進行簽名並通知全部人,不然沒法確認全部人對該動做達成共識。此時,退而求其次,可由 Layer2 的 Operator 對該資產鎖定證實進行簽名,來宣佈該動做在 Layer2 達成了共識。顯然,存在某些狀況一些參與方對該行爲並不承認,他們能夠執行退出動做離開這個共識區,或者把 Operator 的簽名提交到 Layer1 上進行仲裁。同時,也存在 Operator 有意或無心地忽略了用戶的資產鎖定證實,並無對其簽名、在 Layer2 上廣播的狀況,此時用戶也應該能夠執行退出動做。最終留下來的參與者代表其對鎖定證實無異議,即對此達成了與 Layer1 安全性一致的共識。
狀態遷移
Layer2 用戶的每一筆交易都應該使得 Layer2 的總狀態發生正確遷移。這一步驟涉及三個關鍵行爲:每筆交易的發生是否達成了共識,每筆交易的結果是否達成了共識,該共識的達成是否受到 Layer1 的監督。
與進入階段相似,參與方對共識的接受與否取決於本身與全部其餘參與方的承認或本身與 Operator 的承認。點對點交易的 Layer2 只須要得到對方的簽名,並確認該簽名符合設置階段的業務規則便可。而多對多交易的 Layer2 則必須由 Operator 提交共識結果,而且將共識結果的摘要提交到 Layer1 做爲 commitment 以便該行爲接受 Layer1 監督和仲裁。
該步驟的幾個關鍵點在於,參與方應可以對影響到本身資產的狀態遷移進行檢驗;參與方應可以驗證 Operator 提交到 Layer1 的 commitment 與本身得到的狀態遷移信息的一致性,並可得到足夠的數據生成證實並提交到 Layer1 進行質疑;當參與方交易被 Operator 過濾時,它的資產應能夠安全地退出。其中前兩個點都涉及 Layer2 的數據可用性問題,後一個點涉及 Layer2 的服務可用性問題。一旦服務或數據不可用,用戶能夠隨時退出;在數據和服務可用前提下,Operator 的做惡行爲能夠由 Layer1 約束。
退出
Layer2 的退出機制很是複雜,類型也很是多。但其本質都是退出人將資產狀態及其證實提交到 Layer1 上,經過預約規則和已經由 Layer1 承認的狀態 commitment 的驗證解鎖資產。退出流程依賴於已經達成共識的規則和狀態 commitment,並受後續挑戰與應答階段的約束,其自己的要點在於退出次序和退出的即時性。
對於須要引入 Operator 爲 Layer2 共識結果以及 Layer2 錨定到 Layer1 的 commitment 進行背書的協議來講,老是存在某些狀況沒法證實 Operator 給出的共識結果是錯誤的。所以須要一個公正的退出次序可以保障誠實用戶優先退出。然而,偏偏是由於咱們沒法證實某人「誠實」才引入了退出的次序問題,因此這裏指的誠實用戶優先退出指的是全部的誠實用戶都必須時刻關注 Operator 的行爲,並在其行爲失序時馬上發起退出,而後按照這些用戶退出狀態所在的時點的前後次序進行依次退出。
用戶提交的退出動做涉及的資產可能與其餘用戶的資產有關,Layer1 每每沒法肯定用戶提交的退出動做是不是對應資產的最終狀態,這就須要等待其餘用戶對該動做的挑戰。挑戰的流程決定了退出動做的即時性。理論上,若是 Layer1 能夠肯定該動做就是對應資產的最終狀態,該資產就能夠即時退出。例如要求 Operator 在 Layer1 上抵押不小於當前用戶全部資金餘額的資金,並在每次向 Layer1 提交狀態空間 commitment 時都向每個用戶發送一個當前餘額的證實。那麼用戶就能夠在最新的 commitment 上提交一個即時的、無需等待挑戰的退出請求。
挑戰與應答
挑戰與應答發生在 Layer1,利用了它做爲 Layer2 仲裁者的角色。對應的挑戰內容爲全部在 Layer1 上發生的與 Layer2 有關的交易,包括 Layer2 共識狀態的 commitment 以及用戶對退出狀態的主張。
對共識狀態 commitment 的挑戰意味着挑戰者不認同 Operator 提交到 Layer1 的共識結果,這種不認同或者源自於挑戰者得到了不一樣的狀態結果,或者來自於挑戰者沒法得到足夠的數據以獲得對應的狀態結果。針對第一種狀況,挑戰者能夠提交新的 commitment,並給出足夠的證據證實其正確性。針對第二種狀況,挑戰者能夠提交一個數據申請,要求 Operator 披露完整數據。
但因爲數據可用性,或者 Operator 簽署衝突的共識結果等問題,上述挑戰可能沒法獲得符合誠實用戶利益的結果。此時,應容許用戶選擇最近一個用戶承認的狀態點進行挑戰。若是 1) 用戶因爲本身疏忽致使超過了最後一個本身承認的狀態點的退出提交時間;或者 2) 預約義的設置規則並不容許用戶對 Operator 提交的共識 commitment 信息進行挑戰,那麼用戶將蒙受損失。前者正是 Plasma 方案遇到的用戶體驗批評,後者則是多籤跨鏈方案遇到的安全詬病。
本框架從 Layer2 交易業務流程出發,分析了局域共識的 Layer2 與全局共識的 Layer1 之間進行資產轉移的必要步驟。指出確保 Layer2 的安全性要求第一 Layer2 要可以達成共識,第二 Layer2 的共識結果必須由 Layer1 接受。
對於點對點交易的 Layer2 協議來講,達成共識只須要雙方交換對共識的簽名便可。對於多對多交易的 Layer2 協議來講,達成共識不得不引入 Operator 的角色,並由 Operator 將共識結果的摘要提交到 Layer1 備查。咱們還應該發現,Layer2 Operator 的數量對該流程並沒有本質影響,所以 Layer2 並不關心運營方是中心化節點仍是分佈式節點。此外,因爲 Layer2 的共識範圍老是小於 Layer1,所以不論 Layer2 採起哪一種共識形式(包括何種激勵形式),其共識結果都不能由 Layer1 無條件接受。所以 Layer2 的共識達成方式也不是 Layer2 安全性的決定性因素。
所以, 不管是哪一種類型的 Layer2 協議,其共識結果要想得到 Layer1 的接受都須要經歷挑戰-應答過程。 而挑戰-應答流程則受到 Layer1 帶寬、退出次序以及高費用的限制,對大部分用戶來講是很是高的門檻。但這並不意味着用戶資產退出的即時性沒法獲得保障,能夠經過 Operator 對用戶在 Layer2 持有的資產在 Layer1 上進行 100% 資產抵押來實現用戶退出的實時性。
從用戶體驗的角度來講,挑戰-應答流程是一個災難,每一個用戶都必須時刻關注最新的狀態變動。將挑戰-應答流程委託給代理方並不能提升安全性,由於它把風險轉嫁到代理方的可信性上了。一個折中的方案是結合點對點交易和多對多交易的 Layer2 的特色,讓 Operator 給出足夠的資產抵押,並對用戶在 Layer2 上的狀態遷移給出資產退出保障。這樣,一旦用戶選擇退出,能夠當即退出,無需經歷挑戰-應答流程。還有一種方法就是用戶捨棄轉移到 Layer2 的資產的安全性,對 Operator 給與信任,由 Operator 完成全部的狀態遷移與資產退出證實工做。相信這兩種協議會是將來 Layer2 發展的重點。
做者:王博