4 月 23 日,imToken 聯合 togETHer 在杭州共同策劃了一場以太坊 L2 擴容主題的線下 Meetup。 Looping 的 CTO Steve Guo 分享了 Looping 新推出的 ZK Rollup 橋接方案 - Ethport。
Loopring 分享現場視頻
以下內容來源於 Loopring 官方博客對 Ethport 方案的介紹,由 Ethfans 社區翻譯和整理。
概述
- Loopring ZK Rollup 用戶可以利用批處理交易和零知識證明,在 L2 直接與 L1 DApp 交互,便宜快捷
- Loopring 現已支持便宜且資本高效的 L2-L2 雙向轉賬
- 中心化交易所可以使用標準的 L1 功能來將款項直接取出到 Loopring 的 ZK Rollup 上,而且代價也能保持 L2 交易的低水平。用戶從 Loopring 把資金直接存入中心化交易所也會變得更簡單、更便宜
- Ethport 將作為 Loopring 3.7 版本的一部分,在 2021 年 5 月推出
問題描述
我們當前的 ZK Rollup 在降低轉賬和訂單簿 / AMM 交易的交易代價上已經做得很好了。但是,雖然轉賬和操作是用戶經常做的事,但有時候,他們也想做一些更複雜的事,需要與 L1 交互的事。而在以太坊上發交易的 Gas 費又是很貴的。
從中心化交易所中取款也一樣,再加上,每種 L2 都有自己的特點,所以 CEX 並不那麼容易支持直接取款到 L2 上。如果有一個標準化的 L1 接口,可以隱藏起所有的實現細節,同時還能保持像 L2 交易那樣的低成本,想必是皆大歡喜。
如今,每天都有許多 L2 推出,用戶也希望不需要經過 L1 就能在 L2 之間轉賬,否則極為繁瑣(要從某個 L2 中取錢到 L1 上再存入另一個 L2)。
即使未來會有更多功能直接做在 L2 上,要是這些問題沒有解決,那也夠嗆。一部分(甚至是絕大部分)流動性仍會留在 L1 上,直到更通用的 L2 變得更成熟。我們需要某些東西來開路架 “橋”(一語雙關哦),跨過這個轉型期。
解決方案
盡可能把工作都交給 L2 來完成,是降低用戶成本的關鍵。通常來說我們可以(在 L2 上)把許多交易捆綁在一起然後上鍊,這樣 L1 的 Gas 成本就能在這許多筆交易之間分攤。 L2 的交易用來執行實際功能,而且這樣只需一筆 L1 交易就能滿足所有用戶的需要,這就大幅降低了 Gas 開銷。
ZK Rollup 非常非常適合用來解決這個問題,因為 L2 的狀態是隨著相關的計算有效性證明提交到 L1 而立即獲得終局性的。這不僅意味著像取款這樣的操作可以一觸即達,而且 L1 的交易可以立即使用 L2 上的數據,而無需擔心無效的狀態轉換摻雜其中、需要回滾 L2 狀態。
通常情況下,理想的解決方案都基於具體的問題以及我們想要的用戶體驗。我們先來仔細看看 Loopring 的工具箱裡都有些什麼傢伙,各自都能解決什麼問題,然後再來解釋如何把它們呈給用戶。
流動性提供者
這也是 Loopring 當前實現的階段。我們依賴於專門的流動性提供者為 L2 提供流動性。當然,有時候這些流動性會用來在用戶內部完成撮合。比如,某個人想把錢存入某個金庫合約,而另一個人希望把錢從該合約中取出,那就直接讓他們成為交易對手,這樣至少有一個用戶能實現自己的目標。最理想的情形是用戶都能在彼此之間撮合交易,但用戶的需求是無法預測的,並不總是能在夠短的等待時間內完成。
這種辦法的缺點在於,流動性提供者僅能利用自己手中的很少一部分資金。而且也需要全時段保證資金可用。 ZK Rollup 已經非常適合這類流動性提供者了,因為資本不需要鎖定很長時間(無論是存款還是取款都很快),即使是小額的資金也能很快回收重用。但是,這還不是資金效率最優的形式,我們還可以做得更好。
單相變電站
要解決資本效率的問題,我們可以利用 L2 上的閃電鑄幣(我們已經構思了快一年了)。如果在 L2 上每種 token 都能閃電鑄幣,我們就能獲得任意所需數量:
- 閃電鑄造出所有用戶撮合之後所需的 token 數量,因此所有幣幣交易都能在 L2 上完成(可以撮合幾千筆交易)
- 以可預測的匯率完成 L2 上的所有交易
- 一次性取出所有用戶集體賣出的 token
- 使用這些 token 來做 L1 交易,獲得 L2 用戶想要買入的真實 token
- 用這些 token 來償還閃電貸
如果在 L2 上的幣幣交易的匯率是完全確定的、而且 L1 交易絕對不會失敗(例如 ETH/WETH、或者只有該 L2 自己能交互的任意什麼合約),那這種方法是完美的。但如果:
- 匯率大幅波動,無法預測(很常見的情形)
- 需要執行的 L1 交易可能會失敗(不論什麼原因)
這都是使閃電鑄幣無法償還的風險。如果閃電鑄幣無法償還,那就沒法把這個塊發到主鏈上因為它是無效的。這就意味著我們必須回滾 L2 上的所有交易、用新的交易創建一個新的區塊、生成新的零知識證明 …… 雖然在理論上可以接受,但實踐中我們肯定希望避免這種情形。
雙相變電站
要解決預測問題,我們可以分兩個步驟來完成交易。在第一個階段,我們先把所有用戶的資金都收集起來,安排到一個幣幣互換專用的金庫合約裡。我們不是直接交付用戶希望買入的 token,而是給用戶一種代表他在金庫中的份額的 token(按固定的 1:1 比例)。然後就可以等待 L1 交易完成了,實際的匯率也能觀察到。在第二個階段,變電站收到的 token 可以在下一個區塊中按比例分發給所有用戶。
橋接器
橋接器是一個比變電站更強大的設計,但用戶的單筆交易成本也會更高,因為有額外的 L1 費用。橋接器不僅能像變電站那樣支持批量的幣幣互換(而且方式更靈活),它還支持那些沒有辦法被抽象成一筆幣幣互換交易的 L1 操作。
橋接器也使高效的 Loopring 用戶引導操作成為可能,辦法就是批量存入。用戶不必單個單個地把錢存到 ZK Rollup 裡面,批量存入功能可以直接在 L1 上使用一個標準的智能合約來實現,用戶可以成批地進入 L2 的世界。如此一來,昂貴的 L1 代幣轉賬可以簡化為每種代幣一筆轉賬交易,然後用便宜得多的 L2 轉賬在 L2 上完成分發。這也使得中心化交易所更容易使用標準的 L1 基礎設施來支持 Loopring。
橋接器也使得用戶可以在 L2 上發起 L1 交易。首先,把所有這些交易的資金都收集到一個 L2 上的橋接器賬戶中(以此最小化 L1 代幣轉賬數量);然後,在 L1 的橋接器合約(也是 L2 橋接器賬戶的 owner)我們運行所有發送給橋接器的轉賬(方法是使用 “有條件轉賬”,條件就是轉賬已由橋接器合約處理)。讓用戶在簽名轉賬時添加額外的數據,橋接器就知道用戶想用提供的資金做哪些 L1 操作。橋接器把用戶的交易按照 L1 交易的類型分類成批,然後把成批的交易發送給對應類型的連接器(connector)。這些鏈接器都是簡單的合約,在所有用戶的交易和批交易做轉換。橋接器提供了一個通用的接口,可以讓用戶連接到任意連接器合約,即使你並不知道連接器到底是乾什麼的,也無所謂!
每個用戶都可以為連接器提供定制化的數據(至於能接受什麼樣的數據也取決於連接器本身),也就是雖然用戶的交易是以批次為單位處理的,但操作都是可以定制的。舉個例子,如果一批用戶想在 Uniswap 上做幣幣交換,每個用戶都可以設置自己願意接受的滑點。連接器可以只為那些滑點要求得到了滿足的用戶執行操作,但其他用戶則只返回,不做操作。另一個例子是跨 L2 轉賬:用戶可以設定 TA 的資金想要去往的另一個 L2 上的地址。
有些交易會需要給 L2 上的用戶返回資金,另一些交易(比如僅僅是把資金轉入另一個 Rollup)則不需要。連接器會使用同樣的批存入功能來實現這一切,只要有需要。
✈ Ethport
Ethport 是一個建立在上述設計上的、對用戶友好的產品。
- 盡可能使用 L2 上可用的流動性
- 如果存在最優化的變電站並且可用,那它就會走變電站,批量處理所有相似的 L1 以盡可能降低費用
- 如都不可用,就使用通用的橋接器
通常來說,用戶會需要等待一段時間,直至有足夠多的用戶想做類似的操作,或者另一個用戶 / 流動性提供者表示他們可以幫助這筆交易更快完成。我們把通用的 DApp 集成模塊叫做 “終端(terminal)”,一個終端內每個單獨的、可批處理的操作叫做 “門(gate)”。
舉個例子,如果用戶想把 ETH 存入 Yearn ETH 金庫,TA 需要跑到 Yearn 終端,等待 TA 的交易在 ETH 門啟動。
我們會根據用戶的需要逐漸地添加終端和門。
---
其他幾場分享的文字版也已整理完畢,會在後續分享給大家,敬請期待。
風險提示:本文內容均不構成任何形式的投資意見或建議。 imToken 對本文所提及的第三方服務和產品不做任何保證和承諾,亦不承擔任何責任。數字資產投資有風險,請謹慎評估該等投資風險,諮詢相關專業人士後自行作出決定。