這篇短篇文章會介紹 L2 讓使用者用該 L2 的代幣來支付交易手續費的優缺點。
先備知識:
L2 幾乎都會發行自己的代幣,但絕大多數的實際用途都只是用來參加治理(Arbitrum、Optimism)。有些 L2 會提供質押 L2 代幣的功能,例如 Mantle 及 Manta。這些質押可以用來「決定誰可以排序交易的權力」、「決定生產零知識證明的權力」,或是用來「確保 L2 資料的資料發佈特性(Data Publication)有被保障」,詳細可參考官方文章或文件:StarkNet、zkSync、Mantle、Manta。
註:不過要注意「資料是否正確發佈」是沒辦法被客觀證明的,因此也就沒辦法進行懲罰,所以我個人對「為了資料發佈特性而質押 L2 代幣」的設計仍然存疑。資料發佈特性的介紹可參考:
資料可得性重新命名:用 Data Publication 取代 Data Availability
那 L2 代幣可以用來支付使用者的交易手續費嗎?這麼做有什麼樣的優點和缺點?
增加代幣用途,讓 L2 代幣不是只有單純治理功能。甚至可以搭配 EIP-1559 機制去銷毀 L2 代幣,讓 L2 代幣成為通縮代幣增加價值。
Rollup Sequencer 在上傳資料到 Ethereum 上時,還是得以 ETH 支付手續費,所以 Sequencer 得要承擔風險 Rollup 代幣及 ETH 之間的價格波動風險。如果它在「收到 Rollup 代幣」到「將 Rollup 代幣兌換成 ETH」的期間,Rollup 代幣價格相對 ETH 價格下跌,那就表示賠錢;當然反之則是賺錢,不過 Sequencer 未必會想再多承擔一層風險。
註:如果該 L2 不是 Rollup、不是上傳資料到 Ethereum 而是改成上傳到其他 DA 層的話,一樣會遇到這個問題,只是 ETH 換成了該 DA 層的代幣。像是 Mantle 或 Manta 都是將資料上傳到其他 DA 層。
如果 L2 只能使用自己的代幣來支付手續費,會造成使用者的使用體驗變差,因為使用者進到該 L2 就得想辦法再換成該 L2 的代幣。例如 Polygon PoS,如果使用者第一次使用 Polygon PoS,以為把 ETH 存進去就可以開始使用,使用者會發現 ETH 沒辦法用來支付手續費,而且他也沒有用來付手續費的 Matic 代幣,因此也不能把 ETH 換成 Matic,所以他必須再一次在 L1 先換到 Matic 然後再把 Matic 存進 Polygon PoS 才能正常使用。
註:嚴格來說 Polygon PoS 是屬於安全性較低的側鏈(Sidechain)而不是 L2,不過不影響這裡舉的使用體驗的例子。
如果每個 L2 都這麼做,那 N 個 L2 就會造成使用者 N 次麻煩。
如果 L2 都用自己的代幣支付手續費,那 L2 之間的互通性(Interoperability)將會變得很差。例如單純的 L2 跨鏈轉帳,使用者不能單純地把 ETH 跨過去就可以順利在目標 L2 上開始交易,他會遇到和前面 Polygon 一樣的問題,所以他必須換成目標 L2 的代幣,例如(假設)從 ARB 換成 OP,而這還會受到 ARB <-> OP 的流動性所影響。如果有 N 條 L2,那流動性就要分割到 N-1 個池子,使用者也要兌換 N 次才能在 N 條 L2 上開始交易。更複雜的操作例如跨鏈借貸、跨鏈開倉、跨鏈清算,都隱含著要先跨手續費過去,等於每次都要支付一定成本在這上面。
或例如 Optimism 為互通性而打造的 Superchain,如果 Superchain 生態裡的每個 Rollup 都用自己的代幣支付手續費,那就等於直接牴觸 Superchain 的目的和願景。
不過以上「使用體驗變糟」及「L2 互通性變差」的前提都是 L2 都「只」接受用自己 L2 代幣來支付手續費。如果 L2 都開放讓使用者可以選擇以 ETH 或是 L2 代幣支付的話,就不會有上述這兩個缺點:使用者在做跨鏈操作時就以 ETH 為媒介,在 L2 上獨立操作的話就以 L2 代幣支付手續費。而 StarkNet 便是即將成為同時提供 ETH 或 STRK 來支付手續費的 L2。
StarkNet 去年底宣布將會支援「以 STRK 代幣支付手續費」的選項,使用者將可以選擇以 ETH 或 STRK 來支付手續費,Sequencer(StarkNet 稱為 Operator)會承擔 ETH <-> STRK 匯率變化的風險。那 Sequencer 要怎麼決定一筆原本是 0.1 ETH 手續費的交易如果改成 STRK 支付的話要收多少 STRK?
不管在 L1 還是 L2 中,使用者的交易基本上都是指定一個他願意付出手續費的最大值,例如在 Ethereum、Arbitrum 或 Optimism 等採用 EIP-1559 機制的鏈上,使用者都需要指定一個 maxFeePerGas 值,maxFeePerGas 乘上 gasLimit 就代表這筆交易的手續費最大值。如果是在非 EIP-1559(例如 Bitcoin 或是以前的 Ethereum)的鏈上,使用者就是指定一個固定的手續費。
註:StarkNet 雖然還沒有 EIP-1559,但一樣也是指定一個 maxFee 值。
不管在哪一條鏈上,有權排序、收入交易的人(礦工、驗證者、Sequencer 等等)都有權力可以審查交易、不收入特定交易,但只要某筆交易被收入了,那筆交易最多就是被徵收使用者指定的手續費最大值。
有些人會覺得要有一個公開 Oracle 來提供 ETH <-> STRK 報價,這樣在把 0.1 ETH 的手續費轉換成 STRK 數量時才有一個公開公正的轉換匯率。不過如同前面一段提到的,Sequencer 可以不收入特定交易,但只要收入了,最多就是收取使用者指定的手續費最大值,所以重點是使用者指定了願意付出的手續費最大值(不管單位是 ETH 還是 STRK),剩下就是等交易被收入。ETH <-> STRK 的匯率是否公開根本沒有影響,只要 Sequencer 想要,他都有手段可以將使用者的交易手續費收到滿。
所以就不需要 Oracle 了嗎?
實際上還是需要 Oracle,而且 StarkNet 也宣布會有 Oracle 來提供 ETH <-> STRK 報價,只是這個 Oracle 會是在鏈下專為 StarkNet Sequencer 提供報價的服務。但我覺得 Oracle 不應該用在這個場景,後面會說明。
如果 Oracle 是在鏈下去提供報價給 Sequencer,要怎麼說服社群 Sequencer 真的是照著 Oracle 報價來計算 STRK 手續費?Oracle 至少得公佈他們的報價,讓社群能比對 Sequencer 是否有如實按照報價計算,如果發現 Sequencer 沒有如實參考報價,那社群至少可以提出證據來譴責 Sequencer️。🤷♂️
如果 Oracle 的報價能寫到鏈上或是整合進協議裡,就能免除 Sequencer 作惡或失誤的可能,不過這得牽涉到協議層的改動,所以或許目前這個作法是以盡力取信於社群的最大折衷做法了,畢竟 StarkNet 其實是可以完全讓 Sequencer 自己決定的。反正如前述,使用者指定 maxFee 後剩下就是交由 Sequencer 決定了。
那 Oracle 在哪才會真的派上用場?
為什麼 Force Inclusion 機制會需要 Oracle?先不論 StarkNet 目前還沒有實作出 Force Inclusion 機制,其他 L2 像是 Optimism 或 zkSync 都會在使用者在 L1 上執行 Force Inclusion 函式時,先向使用者收取 L2 的手續費。例如 Optimism 的 depositTransaction 函式會按照使用者指定的 L2 gas limit 去燒毀(消耗掉)相對應的 gas,也就是收取 L1 ETH 的意思;zkSync 的 requestL2Transaction 函式會算出 L2 交易的基本成本並要求 L1 交易要帶上足夠的 ETH 來支付基本成本。如果今天 Optimism 或 zkSync 也推出自己的代幣支付手續費的功能,那 Force Inclusion 機制會有什麼影響?
假設使用者從 L1 請求強制收入他的 L2 交易,但是 L1 收取的是 ETH 而 L2 手續費是用 OP 支付的話,要怎麼計算該在 L1 收他多少 ETH?如果沒有公正的匯率,就有可能造成使用者付出超額手續費,等於是懲罰 Force Inclusion 使用者;或是造成攻擊者濫用低廉手續費,都從 L1 去送交易而不是從 L2。而這才是我覺得 Oracle 該派上用場的場景:讓 L1 合約可以公正地計算 Force Inclusion 交易要收取的手續費。
不過 L2 可以規定 Force Inclusion 交易和 L2 交易都以 L2 代幣計價(例如都收取 OP),這樣就不需要煩惱 L1 與 L2 手續費單位換算的問題。但要注意的是,仍然有一個成本是無可避免要以 ETH 計價的 — 資料上傳的成本,所以使用者的 Force Inclusion 交易會變成要同時支付 ETH 以及 OP,這可能造成一些使用體驗上的摩擦,但這也是 L2 用自己代幣支付手續費本來就需要面對的挑戰。
TEM Medium 目前正在進行有獎徵稿!詳情請參考:
Special thanks to Kevin Mai-Hsuan Chia and Chang-Wu Chen for reviewing and improving this post
用原生 L2 代幣來支付交易手續費 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。