🎉 Gate xStocks 交易開啓啦,現貨、合約、Alpha齊上線!
📝 在Gate廣場發帖,曬出你的交易體驗或精彩截圖,瓜分$1,000大獎池!
🎁 廣場優質創作者5名,每人獨享$100合約體驗券!
🎉 帖文同步分享到X(推特),瀏覽量前十再得$50獎勵!
參與方式:
1️⃣ 關注 @Gate廣場_Official
2️⃣ 帶 #Gate xStocks 交易体验# ,原創發帖(不少於20字,僅用活動標籤)
3️⃣ 若分享到推特,請將連結提交表單:https://www.gate.com/questionnaire/6854
注:表單可多次提交,發布更多帖文可提升獲獎機會!
📅 7月3日16:00—7月9日24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/45926
每一條體驗,都有機會贏取大獎!快在Gate廣場show出你的操作吧!
鏈下擴容方案全解析:狀態通道、閃電網絡及其發展歷程
鏈下擴容深度解析
作者:Ellaine Xu、Hettie Jiang、June Wang、Walon Lin、Yiliu Lin
1. 擴容的必要性
區塊鏈的未來願景是去中心化、安全性和可擴展性。但通常區塊鏈只能實現其中兩個,這被稱爲區塊鏈的不可能三角問題。多年來,人們一直在探索如何在保證去中心化和安全性的前提下,提高區塊鏈的吞吐量和交易速度,即解決擴容問題,這是當前區塊鏈發展過程中的熱點話題之一。
讓我們先定義區塊鏈的去中心化、安全性和可擴展性:
去中心化:任何人都可以成爲節點參與區塊鏈系統,節點數量越多,去中心化程度越高,確保網路不受少數參與者控制。
安全性:獲取區塊鏈系統控制權的成本越高,安全性越高,鏈就可以抵抗較大比例參與者的攻擊。
可擴展性:區塊鏈處理大量交易的能力。
比特幣網路的第一次重大硬分叉源於擴容問題。隨着比特幣用戶數量和交易量增多,1MB區塊上限的網路開始面臨擁堵。2015年開始,比特幣社區就擴容問題存在分歧,一方支持擴大區塊,另一方支持使用隔離見證Segwit優化主鏈結構。2017年8月1日,支持大區塊的一方自行開發8MB客戶端系統開始運行,導致比特幣出現第一次重大硬分叉,同時誕生了新幣種BCH。
同樣,以太坊網路也犧牲了部分可擴展性來保障網路安全性和去中心化,通過對單一區塊可容納的燃料費設置上限來限制交易量。目的是實現無信任共識並確保節點廣泛分布。
從2017年的CryptoKitties,DeFi summer,到後來GameFi和NFT等鏈上應用興起,市場對吞吐量需求不斷增加,但以太坊每秒仍只能處理15-45筆交易。這導致交易成本增加,結算時間變長,大部分DApps難以承受運行成本,整個網路對用戶而言變得又慢又貴,區塊鏈擴容問題亟待解決。理想的擴容方案是在不犧牲去中心化和安全性的前提下,盡可能提高區塊鏈網路的交易速度和吞吐量。
2. 擴容方案的類別
我們按照"是否改變一層主網"作爲標準,把擴容方案分爲鏈上擴容和鏈下擴容兩大類。
2.1 鏈上擴容
核心概念:通過改變一層主網協議達到擴容效果的解決方案,目前的主要方案是分片。
鏈上擴容有多種方案,此篇文章不展開,簡要列舉兩種:
方案一是擴大區塊空間,增加每個區塊打包的交易數量,但這會提高對高性能節點設備的要求,提高節點加入門檻,降低"去中心化"程度。
方案二是分片,將區塊鏈帳本分成若幹部分,由不同分片負責不同記帳,並行計算可以同時處理多個交易。這可降低節點計算壓力和加入門檻,提高交易處理速度和去中心化程度,但會降低整個網路的"安全性"。
改變一層主網協議可能產生難以預料的負面影響,因爲底層任何細微的安全漏洞都會嚴重威脅整個網路的安全性。例如,2018年Zcash的通脹漏洞事件:Zcash代碼基於比特幣0.11.2版本修改,2018年發現其底層代碼存在高危漏洞,可無限增發代幣,團隊花了8個月時間進行祕密修補,修復後才公開這一事件。
2.2 鏈下擴容
核心概念:不改變現有一層主網協議的擴容解決方案。
鏈下擴容方案又可以細分爲Layer2和其他方案:
3. 鏈下擴容的方案
3.1 State Channels
3.1.1 概要
狀態通道規定只有在通道打開、關閉或解決糾紛時,用戶才需要與主網交互,並把用戶之間的交互放在鏈下進行,以降低用戶交易的時間和金錢成本,並實現交易次數不受限制。
狀態通道是簡單的P2P協議,適合"基於回合的應用程序",例如兩人國際象棋遊戲。每個通道都由主網上運行的多籤智能合約管理,該合約控制存入通道的資產,驗證狀態更新,並仲裁參與者之間的爭議(根據帶有籤名和時間戳的欺詐證明)。參與者在區塊鏈網路部署合約後,存入資金並鎖定,雙方籤名確認後,通道正式開通。通道允許參與者之間進行不限次數的鏈下免費交易(只要他們的轉帳淨值不超過存入的代幣總額)。參與者輪流發送狀態更新給對方,等待對方的籤名確認。一旦對方籤名確認,這筆狀態更新就算完成。正常情況下,雙方同意的狀態更新不會上傳主網,只有在出現爭議或關閉通道時,才會依賴主網確認。需要關閉通道時,任一參與者可在主網提出交易請求,如果退出請求獲得全員一致籤名批準,則鏈上立即執行,即智能合約根據通道最終狀態下每個參與者的餘額,分發剩餘的鎖定資金;如果其他參與者沒有籤名批準,則所有人需等待"挑戰期"結束才能收到剩餘資金。
綜上,狀態通道方案可以大大減少主網計算量,提升交易速度,降低交易成本。
3.1.2 時間線
2015/02,Joseph Poon和Thaddeus Dryja發布閃電網絡白皮書草案。
2015/11,Jeff Coleman首次系統性總結State Channel的概念,提出比特幣的Payment Channel是State Channel概念中的一個子案例。
2016/01,Joseph Poon和Thaddeus Dryja正式發表白皮書《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》提出比特幣閃電網絡的擴容方案Payment Channel(支付通道),該方案僅用於處理比特幣網路上的轉帳支付。
2017/11,第一個基於Payment Channel框架下的有關State Channel的設計規範Sprites被提出。
2018/06,Counterfactual提出了一個非常詳細的Generalized State Channels設計,這是第一個完全與狀態通道相關的設計。
2018/10,文章Generalised State Channel Networks提出State Channel Networks和Virtual Channels的概念。
2019/02,狀態通道的概念擴展到N-Party Channels,Nitro是首個基於該想法建立的協議。
2019/10,Pisa爲了解決所有參與者需要持續在線的問題,拓展了Watchtowers的概念。
2020/03,Hydra提出Fast Isomorphic Channels。
3.1.3 技術原理
圖1展示的是傳統鏈上的工作流程:Alice和Bob與部署在主網上的智能合約進行交互,用戶通過向鏈上發送交易來改變智能合約的狀態。缺點是會帶來上面討論的時間和成本問題。
圖2展示的是大多數狀態通道協議遵循的一般工作流程:樂觀情況下,Alice和Bob需要執行與之前相同的操作,但這次他們使用狀態通道,而不是與鏈上合約進行交互。
第一步,Alice和Bob通過從個人EOA存入資金到鏈上合約地址(交互1,2),這些資金被鎖定在合約中,直到通道關閉時才將餘額返回給用戶;二人籤名確認後,二人之間的狀態通道正式開通。
第二步,Alice和Bob通過該通道理論上可在鏈下開展不限次數的交易(藍色虛線),參與者通過加密的籤名消息相互通信(而不是與區塊鏈網路通信)。雙方用戶都需要對每筆交易進行籤名,以防止雙花作惡。通過這些消息,他們提出自己帳戶的狀態更新,並接受對方提出的狀態更新。
第三步,如果Alice想關閉通道結束和Bob之間的交易,Alice需要向合約提交自己帳戶的最終狀態(交互3),如果Bob籤名批準,合約則會根據最終狀態將鎖定的資金釋放返回對應用戶(交互4,5)。如果Bob未響應籤名,合約則會在挑戰期結束後將鎖定的資金釋放返回對應用戶。
圖3顯示的是悲觀情況下狀態通道的工作流程:起初,兩個參與者存入資金(交互1,2),然後開始交換狀態更新(藍色虛線)。假設在某個時間點,Bob在他的輪次中不響應Alice發送來的狀態更新籤名(交互3),此時,Alice可以通過向合約提交自己最後一次的有效狀態來發起挑戰(交互4),這個有效狀態也包含了Bob之前的籤名,從而證明最後一筆交易已經收到Bob的批準,最後狀態已經收到Bob的確認。然後,合約允許Bob在一段時間內通過將下一個狀態提交給合約進行響應;如果Bob響應,則二人可以繼續在狀態通道內進行交易;如果Bob在該時間段內沒有響應,則合約自動關閉狀態通道並將資金返回給Alice(交互5)。
3.1.4 優缺點
優點:
缺點:
3.1.5 應用
比特幣閃電網絡
概述:
閃電網絡是比特幣網路的小額支付通道,其整體技術演變經歷:2/2多籤構建單向支付通道,增加RSMC(Revocable Sequence Maturity Contract)後可構建雙向支付通道,再增加HTLC(Hash Time Lock Contract)後可連接支付通道拓展到多人支付,最終構建支付網絡即閃電網絡。通過鏈下小額支付通道,然後借助中間人構成交易網路,可以解決比特幣網路擴容問題。閃電網絡的整體使用遵循着"存款(建立通道)→閃電網絡交易(更新通道狀態)→退款/結算(結束通道)"的流程;理論上閃電網絡每秒可以處理一百萬筆交易。
時間線: