ZeroSwap:基於ZK-Rollup的 DEX

買賣虛擬貨幣
在DeFi領域,DEX是最重要的組成部分。根據Duneanalytics的統計,過去7天的DEX交易量已經超過40億美元。Uniswap當日的交易量也超過3億美元,這些交易量都是記錄在鏈上的真實交易量,不可做假。

在今年年初的時候Uniswap上鎖定的資產量才1500萬美元左右,即便是兩個月前的7月25日也才8000多萬美元,而僅僅兩個多月後,Uniswap鎖定資產量超過20億美元,可見其發展的迅速。

DEX的難題

雖然DEX發展迅速,但盛況之下並非沒有缺陷。如今的DEX交易量往往由投機交易、挖礦等因素驅動,掩蓋了一些需要重視的問題。這些問題包括高費用、速度慢、低吞吐量、使用者體驗差等。參與過挖礦的使用者都深有體會,在擁堵的高峰期,挖礦gas費用幾十美元,甚至上百美元也是常有的事情。

由於多數AMM模式的DEX執行都是在鏈上完成,每個交易每個操作都需要等待區塊確認,這導致交易速度過慢。對於使用者來說,swap本意是兌換,但這種兌換的體驗不夠理想。

目前大多數的DEX都是基於以太坊,以太坊的TPS大約不到20,對於不斷增長的交易需求來說,這樣級別的吞吐量是明顯不夠的。

DEX的技術出路

目前的DEX使用者還是相對小眾的加密使用者,即便如此,也不堪重負。假設,DEX要跟CEX競爭,要對CEX形成足夠的競爭壓力,它還需要解決上述的基礎設施滯後的問題。

為了解決這些問題,目前有兩個選擇,一是離開以太坊,進入其他公鏈進行構建,正如目前Serum在Solana上構建DEX一樣;二是依然留在以太坊上,利用Layer 2的技術進行擴充套件,同時等待以太坊的分片。

在其他公鏈上構建DEX的優勢是,費用、速度、吞吐量等問題都可以得到極大緩解;不足之處在於它從頭開始,需要較長時間構建,因為DeFi上在以太坊上已經有足夠多的樂高技術,且形成了一定程度的網路效應,同時在網路安全性上以太坊也更高。

還有第二種方案是依然基於以太坊,但充分利用Layer 2技術,以實現對DEX現有問題的解決。藍狐筆記之前也提到過Layer 2賽道《以太坊的Layer 2賽道》,其中Zk-Rollup在安全性上有它的優勢,同時也可以解決費用、吞吐量等問題,適合於DEX方面的構建。

ZeroSwap的Layer 2方案

ZeroSwap是基於Zk-Rollup技術的DEX。ZK-Rollup是一種Layer2的解決方案。ZeroSwap試圖解決上述DEX存在的問題,它的核心在於透過應用Zk-Rollup技術實現低費用、快速的兌換體驗,同時它還具有高階別的安全性。

利用Zk-Rollup技術,將ERC20代幣轉移到Layer 2,所有的代幣交易和兌換髮生在layer 2,不過由於它可以透過不斷生成的零知識證明保證layer 1和layer 2狀態的一致性,由此可以無須等待區塊確認時間,無須繳納高額gas費用,實現更快速度的兌換,同時還擁有layer 1級別的安全性,這是接近於CEX的代幣兌換體驗。

具體來說,ZeroSwap利用了zkSync的Zk-Rollup技術。zkSync是Zk-Rollup技術的一種實現。首先是使用者將簽名的交易提交給驗證者。驗證者將多筆交易執行rollup操作,合併為一個區塊,並將更新後的合約狀態樹的根雜湊、與之相對應SNARK證明傳送到鏈上的合約。驗證者也會把交易對應的狀態增量傳送到鏈上,由此人們可以重新構建交易後的狀態。

由於SNARK證明和狀態增量都會經過鏈上合約的驗證,可以證明所有交易的合法性以及區塊資料的可用性。因此,驗證者是無法篡改狀態的,也無法挪用Layer 2上的資金,因為所有狀態的改變都需要對應證明,這是無法偽造的。

此外,在這個過程中,資金並沒有託管給第三方,私鑰依然由使用者掌握。從zkSync的Zk-Rollup實現可以看出,Zk-Rollup的核心思想是透過大量交易聚合,以及鏈上智慧合約來解析和驗證這些交易,並使用零知識證明技術將這些聚合交易的證明上鍊,從而實現layer 2層面的代幣交易。

在這個過程中,大部分計算和儲存都發生在鏈下,鏈上儲存的資料大大減少,資金鎖定在智慧合約。同時,由於鏈上儲存了SNARK證明和交易狀態增量,即便是驗證者不工作,使用者也可以透過鏈上資料恢復交易,取回鎖定的代幣。這可以保證代幣的安全性,使用者依然掌控了私鑰,這方面它跟目前 Layer 1的DEX沒有什麼區別。在保證安全性的前提下,它可以做到的極大地降低交易費用、加快交易速度,實現好幾個數量級別的體驗提升。

SNARK驗證的gas消耗遠低於驗證大量交易的Gas消耗,將完整狀態儲存在鏈下的成本也遠低於儲存在鏈上。從理論上,Zk-Rollup可以透過layer 2方式實現以太坊的可擴充套件性,與此同時極大降低交易費用。

目前ZeroSwap基於zkSync的ZK-Rollup進行layer 2技術實現,它適合於構建安全的去中心化的兌換協議。它支援基本的代幣兌換,包括存入代幣、轉賬和兌換、提取代幣。存入代幣是指將代幣從Layer 1轉移到zkSync的Layer 2上;轉賬和兌換是指在Layer 2上進行代幣轉移和代幣的交易,其好處是基本上無須手續費;最後是代幣提取,將Layer 2上的代幣轉回至Layer 1賬戶。

ZK-Rollup的安全性

ZeroSwap基於Zk-Rollup的技術構建了去中心化的DEX協議。從表面上看,ZeroSwap是類似於Uniswap的AMM模式的DEX,但從底層技術實現和使用者體驗看,它們之間又有一定的區別。

它跟當前Uniswap的最大區別在於可以極大降低交易費用,極大提高交易速度,可以實現接近於CEX的兌換體驗,同時還能保證Layer 1級別的安全性。考慮到其他的Layer 2方案,例如Optimistic rollups和Validium技術,雖然它們也能極大提高交易速度以及降低交易費,但它們在安全性上做了較大的平衡。

鑑於ZK-Rollup在安全性上的重視,基於Zk-Rollup的DEX是未來的發展趨勢。從ZeroSwap的計劃看,它預期是在10月底上線,鑑於Uniswap的Layer 2 還沒有推出,ZeroSwap有可能成為第一個推出基於ZK-Rollup的AMM模式的DEX。

ZeroSwap的整體框架

從大框架來說,ZeroSwap系統包括了鏈上智慧合約、鏈下ZeroSwap 服務端、零知識證明系統以及前端使用者介面。具體如下圖:

鏈上智慧合約是部署在以太坊上的一組智慧合約。使用者的代幣會存入其中,它還會記錄和驗證Layer 2狀態的更新和對應的證明,它是連線鏈上和鏈下的橋樑。ZeroSwap的Layer 2服務端處理鏈下的交易,一方面它透過介面跟使用者發生互動,一方面它監聽以太坊鏈上的交易。

交易請求會放入ZeroSwap的記憶體池,區塊提議者對交易進行Rollup,生成新區塊,狀態Keeper則負責更新Layer 2中的代幣狀態,並將其傳送給Committer。Committer跟Prove server通訊,獲得對應交易的證明。這些狀態和所對應的SNARK證明會傳送到鏈上的ZeroSwap智慧合約。

ZeroSwap的零知識證明系統兩個特點。一是具有分散式架構,其Prove server支援多個Prover,多個Prover可以查詢Prove server的證明任務,在生成證明後返回給Prove server。二是採用了PLONK的零知識證明演算法,它可以極大降低零知識證明的使用門檻。

PLONK的全域性信任設定只需要生成一次,電路規模在一定範圍內可複用。ZeroSwap的交易過程會反映到其狀態樹的變化上。
ZeroSwap的狀態樹是高度為34的默克爾樹,用於記錄當前系統中所有賬戶的餘額狀態。

根節點Root的子節點為系統中所有賬戶節點。賬戶節點包括普通賬戶節點和Pair賬戶節點。普通賬戶節點用於記錄賬戶內所有代幣的狀態,可以有多個葉子節點,每個葉子節點代表一個型別的代幣以及其數量。Pair賬戶節點用於記錄ZeroSwap中某個交易對資金池的狀態。它只包含兩個葉子節點,每個葉子節點代表該資金池中其中一個代幣的餘額和型別。

總結來說,ZeroSwap在技術有自己的特色,例如它採用了Plonk證明系統,其ZK證明電路可以支援不同大小,其初始可信設定只需一次,且在已有設定上可升級;在Layer 2層面實現了Uniswap的兌換邏輯,有可能成為首個實現基於ZK-Rollup的AMM模式的DEX,如果順利實現,可以極大降低使用者的費用,加快交易速度。

ZeroSwap的使用者操作的背後

跟目前Layer 1上的DEX相比,基於Layer 2的ZeroSwap上有哪些操作?這些操作的背後跟Layer 1上的DEX又有什麼不一樣?從使用者前端操作的角度,ZeroSwap比Uniswap多了存入和提取代幣的操作,其他操作基本一致。

從交易者的角度,在ZeroSwap上完成交易,需要哪些操作?這些操作的背後是什麼?

相對於Layer 1上的DEX交易來說,Layer 2上的DEX交易需要將代幣從Layer 1賬戶上存入到Layer 2的賬戶,之後才能進行代幣的兌換或轉賬。這裡會涉及到代幣的存入、轉賬、兌換以及提取操作。

首先是向Layer 2賬戶存入代幣。使用者將以太坊鏈上的代幣存入ZeroSwap的合約,一旦ZeroSwap監聽到使用者在鏈上將代幣轉入ZeroSwap的合約之後,它會根據交易的詳情更新狀態樹。ZeroSwap會根據交易找到相應的賬戶,並根據存入金額更新賬戶中該代幣的餘額。如果賬戶還沒有相應代幣的葉子節點,首先會建立該代幣的葉子節點,然後在更新狀態。葉子節點的狀態更新會導致根節點雜湊的改變。根節點雜湊會與存入交易的SNARK證明一起傳送到鏈上的ZeroSwap合約中。

其次是在Layer 2上進行轉賬和交易。在ZeroSwap上進行轉賬就是把一種代幣從一個賬戶傳送到其他賬戶的過程。轉賬也由使用者在Layer-2上發起,ZeroSwap Server收到轉賬請求後找到相應的收發賬戶,更新這兩個賬戶下的代幣餘額狀態。更新後的狀態樹的根節點雜湊和轉賬相對應的SNARK證明一起傳送到ZeroSwap的智慧合約上。

不過,它並不是鏈上的代幣轉移,因為代幣還在ZeroSwap合約中。使用者在Layer 2上進行交易,它本質上是用自己的代幣與Layer 2中代幣對資金池中的代幣進行兌換。使用者將其在ZeroSwap賬戶下的某個代幣傳送到相應的代幣對賬戶,ZeroSwap則根據AMM演算法計算出使用者可以獲得的相應代幣的數量,併傳送給使用者賬戶。

與此同時,ZeroSwap將更新後的狀態樹根節點雜湊以及兌換操作所對應的SNARK證明傳送到ZeroSwap合約上。在代幣兌換後,跟轉賬操作一樣,鏈上的代幣狀態不會發生改變,因為代幣還在ZeroSwap合約中。

最後跟Layer 1上的DEX不同,Layer 2 上的DEX代幣要回到Layer 1,使用者還需要將代幣從Layer 2賬戶提取到Layer 1。當使用者從ZeroSwap中提取代幣時,首先使用者在Layer 2上發起,之後ZeroSwap 伺服器會收到使用者的提幣請求,之後更新該使用者賬戶下對應的代幣狀態,並將更新後的狀態樹根節點雜湊以及提取操作的SNARK證明傳送到鏈上的ZeroSwap合約。合約進行驗證,然後將合約中鎖定的相應代幣傳送到使用者在鏈上的賬戶。

這一點類似於傳統CEX的提幣操作,不過不同的是,使用者可以自由掌控ZeroSwap DEX的提幣,而CEX的提幣則會受限於CEX機構。在AMM模式的DEX中,交易者要完成交易,首先要有代幣對的流動性池。

那麼如果從流動性提供者的角度,在ZeroSwap上如何提供流動性,如何移除流動性?其背後是什麼原理?

流動性提供者如何新增流動性?

首先由使用者在Layer 2上發起新增某個代幣對流動性的請求,ZeroSwap伺服器收到請求後會找到對應請求人的賬戶和代幣對賬戶,然後根據AMM演算法要求將使用者賬戶下的兩種代幣轉入到代幣對賬戶。系統根據當前代幣池的資金量,計算出使用者可以得到的LP代幣數量,LP代幣代表了使用者在流動性池中權益份額。狀態更新後的狀態樹根節點雜湊和對應的新增流動性證明一起傳送到ZeroSwap合約中。

流動性提供者如何移除流動性?

首先由使用者在Layer 2上發起移除流動性的請求,ZeroSwap伺服器收到使用者請求後會找到對應請求人的賬戶並銷燬相應數量的LP代幣。同時,該代幣對賬戶會根據銷燬LP的數量按比例將兩種代幣返回給請求人的賬戶。狀態更新後的狀態樹根節點雜湊和相應的移除流動性操作證明一起傳送到ZeroSwap合約中。

最後,ZeroSwap上還有一個提取流動性的操作,它並不是移除流動性,而是將流動性池的LP代幣從Layer 2 提取到Layer 1。從操作過程看,它跟其他代幣從Layer 2 提取回Layer 1是一致的。不過不同點在於LP代幣還有一個“鑄造”,需要在Layer 1生成LP代幣,傳送到相應賬戶。

ZeroSwap什麼時候推出?根據ZeroSwap釋出的計劃看,2020年10月10日可以在以太坊測試網上使用,支援Layer 2交易池的建立、兌換以及流動性的新增和移除;2020年10月20日支援多個交易池的組合。2020年10月30日正式推出,在以太坊主網上啟動,支援類似於Uniswap的各種功能。2020年12月30日實現Plonk證明系統的電路最佳化,以及證明效能GPU最佳化;2020年11月初開啟流動性挖礦。

Layer 2與DEX的發展

DEX不僅是DeFi的重要發展,也是整個加密領域最大的發展之一。在加密領域,CEX是最大的價值捕獲者。如今的DEX逐漸演變成為CEX的實質對手。

不過,目前的DEX在可擴充套件性、交易費用、交易速度、交易體驗等方面依然存在短板,無法達到CEX的水平,但隨著Layer 2解決方案的推出,尤其是Zk-Rollup技術的推出,DEX會逐漸解決其短板。一旦這些技術上的短板得以解決,DEX有機會走向大規模的人群的採用,進而在實質上真正成為CEX的對手。 

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;