作者:Davide Rezzoli ( @DavideRezzoli ) 和 Barnabé Monnot ( @barnabe )
非常感謝 Yoav Weiss ( @yoavw ) 向我們介紹了這個問題,Dror Tirosh ( @drortirosh ) 對草稿的有益評論,以及 4337 團隊的支持。評論≠認可;所有錯誤均由作者自己承擔。
這項工作是為ROP-7完成的。
介紹
在我們之前的文章中,我們介紹了 ERC-4337 模型。該模型概述了打包商的費用市場結構,並詳細說明了與捆綁的鏈上發佈成本和鏈下(聚合成本)相關的成本函數。
我們還引入了“打包者遊戲”的概念。這個遊戲將是第二部分的主要焦點。給定一組交易,打包者可以選擇將哪些交易包含在他們的打包中。這造成了打包者之間的信息不對稱。打包者和用戶之間是相互的,因為用戶不知道打包中會包含多少筆交易。這導致了一場零和博弈,用戶處於明顯的劣勢。
本研究旨在探索改善用戶體驗的方法,確保用戶無需為加入下一個捆綁包而支付過高的費用。相反,用戶應該能夠根據實際的市場需求支付費用。
ERC-4337 的當前狀態
在當今市場,P2P 內存池尚未在主網,而是在 Sepolia 測試網上進行測試。基於 ERC-4337 構建的公司目前以私有模式運營,用戶通過 RPC 連接到私有捆綁器,然後該捆綁器將與一個構建器,用於在鏈上發佈您的用戶操作。由 Kofi 開發的Bundle Bear 應用程序提供了一些有關 ERC-4337 當前狀態的有趣統計數據。
在“每週 % 多用戶操作捆綁包”指標中,我們觀察到捆綁器創建包含多個用戶操作的捆綁包的百分比。從 2024 年初到 2024 年 6 月,這一比例從未超過 6.6%。考慮到許多捆綁商有自己的付款人,即代表用戶贊助交易的實體。值得注意的是,就發佈的用戶操作而言,兩個最大的捆綁商也充當付款人,它們贊助了 97%使用其服務的用戶操作。付款人支付一部分由用戶操作,其餘部分由 dapps 或其他實體支付。
問題是,為什麼付費者、dAppETC要為用戶操作付費。用戶將來會償還他們嗎?我們無法確定會發生什麼,但我個人猜測,目前,dApp 正在支付費用以增加其應用程序的使用和採用。一旦採用率很高,用戶很可能必須自己支付交易費用。值得一提的是,在當前模式下,用戶為用戶操作付費並不是最好的選擇,因為一個基本的 ERC-4337 操作需要花費~42,000 gas,而一個正常的交易需要花費~21,000 gas。
ERC-4337 的變體
ERC-4337 概述
內存池在 Sepolia 上仍處於測試階段,尚未在主網。沒有內存池,用戶使用帳戶抽象的選項有限。用戶與 RPC 進行交互,這可能由捆綁 UserOps 的捆綁器提供,或者與一種不捆綁的 RPC 服務,類似於 Alchemy 或 Infura 等服務,它們接收交易並將其傳播到其他捆綁器。
一旦內存池上線,交易流程將類似於下圖,與當前的交易流程類似。內存池增強了用戶的審查抵抗力,因為與 RPC 模型不同,它降低了交易被排除的可能性。然而,即使有了內存池,仍然存在 RPC 提供商可能不會轉發交易的風險,但內存池模型對於喜歡運行自己的節點的用戶特別有益,因為它可以減輕這種風險。
雖然打包商有可能充當建築商,但由於競爭環境,我們更願意將這兩個角色分開。打包商將面臨來自現有成熟建築商的激烈競爭,使得建築吸引力下降,利潤也可能下降。因此,打包商更有動力與成熟的建築商合作,而不是獨立建設並承擔損失的風險。
將打包者和構建者的角色合併為一個實體意味著對當前系統進行重大更改。打包者需要與現有的成熟構建者競爭,或者當前的構建者需要橫向整合並承擔打包者的角色。後一種情況雖然這種說法更加合理,但也引發了人們對市場集中度以及對抵制審查的潛在負面影響的擔憂。
打包器和構建器是兩個不同的實體
由於用戶直接連接到 RPC,所以一切都在更私密的環境中運行,這不利於市場競爭。在不久的將來,內存池將進入主網,從而加劇競爭。
使用內存池,其中 userops 對不同的打包器公開,這會增加競爭,在非本機帳戶抽象的情況下,需要在打包器和構建器之間進行分離,在本機帳戶抽象的情況下,可能不需要分離,因為構建器可以將用戶操作解釋為正常交易。
對於我們的模型,我們認為將打包者和構建者分開也會帶來一些優勢,特別是在競爭和審查阻力方面。想象一下這樣一個場景:所有打包者都為被納入提供成本\textbf{v} v他們的捆綁包。會有一個捆綁商想要吸引更多用戶以獲得更高的利潤,因此他們會提供一個成本\textbf{v'} v' ,其中\textbf{v'} < \textbf{v} v' < v如果打包者之間有足夠的競爭,則\textbf{v'} v'將接近\omega ω ,即打包的聚合成本。在這種情況下,能夠更高效地搜索並擁有更好硬件的打包者可以將更多交易納入捆綁銷售將賺取更高的費用,從而讓用戶的操作更便宜。
這可能導致以下結果:在競爭環境中,捆綁商將降低價格以供用戶選擇,而用戶反過來會尋求以最低價格將其用戶操作納入捆綁包。這種競爭將創造一個系統中,提供最佳價格的打包商比那些只想通過創建較小捆綁包來最大化利潤的打包商更常被選中。將打包商和構建商的角色分開也可以增強審查阻力。打包商可以創建一個捆綁包聚合用戶操作並將其發送給不同的構建者。如果該捆綁包包含可能被審查的操作,則非審查構建者可以接受它並繼續構建。但是,值得注意的是,從用戶的角度來看,這種設置可能會增加成本,因為引入捆綁器會增加額外的參與方,從而導致更高的費用。
RIP-7560
原生賬戶抽象並不是一個新概念,人們已經對其進行了多年的研究。雖然 ERC-4337 正在獲得關注,但它在協議之外的實現既有明顯的優勢,也有弊端。值得注意的是,現有的 EOA 無法無縫過渡到 SCW,並且各種類型的抗審查列表更難利用。如前所述,與普通交易相比,用戶操作成本的 gas 開銷顯著增加。RIP -7560不會從本質上解決與鏈下成本有關的持續問題,但它大大降低了交易費用。從最初的~42000 gas,可以減少~20000 gas 的成本。
Layer2s 賬戶抽象
賬戶抽象可用於第 2 層 (L2) 解決方案。一些 L2 已經原生實現了它,而其他 L2 則遵循 L1 方法並正在等待類似於 RIP-7560 的新提案。在 L2 中,L1 用於將數據提供給繼承安全性,而大多數計算在 L2 的鏈下進行,從而提供更便宜的交易和可擴展性。
在 L2 上的計算成本明顯低於主鏈上數據可用性 (DA) 的 calldata 成本的情況下,使用簽名聚合被證明是非常有益的。例如,主網的 BLS 配對由來自EVM 大約需要花費 ~45000k gas。因此,在 L1 上使用 BLS 比傳統交易更昂貴。
L2 上的壓縮技術已經在使用中,例如 0 字節壓縮,可將 ERC20 傳輸的成本從約 188 字節減少到約 154 字節。通過簽名聚合,可以使用單個簽名進一步提高壓縮效率,將大小減小到~128 字節。
在第 2 層中,簽名聚合是一項關鍵創新,可提高交易效率和成本效益。通過將多個簽名組合成一個簽名,可以顯著減少整體數據負載,從而降低與第 1 層數據可用性相關的成本。這進步不僅提高了可擴展性,還降低了用戶的交易成本,使系統更加經濟、高效。
Layer2 中的簽名聚合經濟學
當使用 L2 服務時,用戶會產生多項費用,包括 L2 運營商費用、基於網絡擁塞的費用以及 L1 上數據可用性的費用。
從先前關於“ 從第一原理理解Rollup經濟學”的研究中,我們可以概述用戶在使用 L2 服務時面臨的成本,如下所示:
當用戶與第 2 層交互時,他會產生一些成本,我們可以定義如下:
- 用戶費用=L1數據發佈費+L2運營商費+L2擁堵費
- 運營商成本= L2 運營商成本 + L1 數據發佈成本
- 運營商收入=用戶費用+MEV
- 運營商利潤=運營商收入-運營商成本=L2擁堵費+MEV
在非原生賬戶抽象的情況下,額外的實體(捆綁器)可能會對創建用戶操作捆綁包收取費用。
考慮到打包商,成本和利潤延伸如下:
- 用戶費用= L1 數據發佈費用 + L2 運營商費用 + L2 擁堵費用 + 捆綁費
- Bundler 成本= 報價(L1 數據發佈費 + L2 運營商費 + L2 擁堵費)
- 捆綁商收入=用戶費用
- 捆綁商利潤= 捆綁商收入 - 捆綁商成本 = L1 和 L2 成本與捆綁商報價之間的差額 + 捆綁商費用
- 運營商成本= L1數據發佈費用 + L2運營商費用
- 運營商利潤=運營商收入-運營商成本=L2擁堵費+MEV
捆綁商從用戶那裡收取服務費,而用戶支付的剩餘部分則用於支付 L2 運營商的費用。如果用戶不知道捆綁包的大小,則很難估算發送用戶操作的實際成本,這可能會導致捆綁商收取的費用高於覆蓋運營商成本所需的費用。
L2 中的激勵協調
捆綁器和 L2 之間的交互有助於解決此問題,因為競爭會激勵 L2 保持較低的用戶成本。向用戶收取過高的費用可能會促使他們轉向提供更公平價格的其他 L2。
讓我們通過引入運營商來重新定義我們的模型。用戶通過出價 V向打包者競標,以納入下一個 L2 區塊。用戶的目標是最小化數據發佈費用,而打包者則尋求最大化他們的費用或獲得L2 交互成本和用戶費用的盈餘。
創建捆綁包並將其發佈到鏈上所涉及的成本可分為兩部分:
鏈上成本函數:當基本費用為r時,發行捆綁包\mathbf{B} B的捆綁器將花費以下成本:
聚合成本函數:打包器具有將n n 個交易聚合成單個打包\mathbf{B} B的成本函數,基本費用為r r :
其中S' < S S ′ < S表示交易的縮減大小,且預驗證 gas 使用F' > F F ′ > F ,其中包含單個鏈上聚合簽名的發佈和驗證。
如果用戶可以獲得n n的可靠估計,他們可以使用大多數 L2 解決方案中提供的estimateGas
函數計算其成本。有了良好的估計,用戶就可以相應地出價,而不必高估他們的出價。此函數確定確保納入所需的成本。對n n和estimateGas
函數有一個良好的估計可以避免用戶支付更高的preVerificationGas
。在下一節中,我們將探索各種機制來確保對n n的可靠估計。
Layer2s 運行一個預言機
預言機的作用是監控內存池並估計存在的交易數量。該過程的工作原理如下:第 2 層部署預言機來檢查內存池,然後通知用戶內存池中的交易數量。這使用戶能夠估計他們對打包的出價。第 2 層可以要求打包者在打包中包含至少指定數量的交易( n n ),否則打包將被拒絕。一旦打包者收集到足夠的交易來形成一個包,它會將包發送到第 2 層,然後將其作為調用數據轉發到主網,以實現數據可用性。
具有共享序列器的 Layer2
一種有趣的方法是讓多個第 2 層 (L2) 網絡運行共享排序器。此設置可以更準確地估計內存池,因為排序器通過共享排序器促成的共識達成一致。
在此配置中,不同的 L2 網絡獨立運行,但共享一個公共排序器。這些網絡會定期檢查共享內存池中的用戶操作 (userops) 數量。共享排序器有助於同步和聚合來自這些網絡的數據。一旦它們達到根據協議,信息會傳達給用戶,允許他們根據現有的用戶操作數量進行出價。
這種方法有幾個優點。首先,它提供了一種去中心化的方法來確定內存池中的用戶操作數,從而增強了對勾結的抵抗力。其次,它消除了如果只有一個系統管理用戶操作之間的通信時可能發生的單點故障。用戶和內存池。第三,共享排序器確保一致性並減少不同 L2 解決方案之間的差異。
通過利用共享排序器,該方法確保了一個強大而可靠的系統來評估和向用戶傳達內存池的狀態,從而提高了整個過程的效率和安全性。
在使用預言機的兩種方法中,存在一個潛在的攻擊媒介,即攻擊者可以在內存池中生成多個用戶操作,並且知道如果將它們聚合在一起,它們將會被還原。因此,預言機看到有n個交易並且需要較大的包,但打包器無法創建包。此問題可能會導致網絡停滯很多塊。
Layer2s 運行自己的捆綁器
在這個提案中,第 2 層本身承擔了打包器的角色,而另一個實體負責處理簽名的聚合(這可能是當前的打包器服務)。這個過程的工作原理如下:第 2 層運行自己的打包器,用戶發送他們的操作(用戶操作)到內存池。第 2 層從內存池中選擇一些用戶操作,並將它們“原始”發送到聚合器,以補償聚合器聚合簽名。聚合器生成捆綁包後,會將其發送到捆綁器,然後將其作為呼叫數據轉發到主網以實現數據可用性。
其主要思想是第 2 層負責收集用戶操作,然後將聚合工作外包給另一個實體。第 2 層負責支付聚合費用,並向用戶收取服務費。
有兩種不同的選擇:
固定費用模型:打包器(序列器)選擇一些交易並向用戶收取固定費用。此固定費用的計算方式與當前的第 2 層交易類似,可預測未來第 1 層數據發佈的成本。或者,第 2 層可以向用戶收取基於捆綁n個聚合用戶操作的成本的固定費用,第 2 層仍然必須預測他將構建的捆綁中將存在多少筆交易才能正確引用用戶,這可以用同樣的方式進行,現在。由於現在 l2 向用戶收取最有競爭力的價格,因此,對用戶來說,保持價格儘可能有競爭力才符合第 2 層的最佳利益。
請求退款:如果第 2 層想要提高其可信度,它可以啟用自動退款。這將涉及一種機制,該機制檢查單個區塊中發佈了多少個用戶操作以及交易是否可以聚合。如果一個用戶操作可以如果沒有聚合,也沒有自動退款,用戶可以請求退款。在這種情況下,Layer 2 可以質押一些資產,如果沒有提供退款,用戶可以強制退款,確保公平和責任。
結論
在這兩篇不同的文章中,我們概述了用戶在競標加入下一個捆綁包時遇到的困難。在第一部分中,我們介紹了 ERC-4337 模型,解釋了捆綁器在鏈上發佈捆綁包時產生的成本以及相關的鏈下成本。我們還概述了打包器的費用市場,並開始討論打包器的格式化問題。由於缺乏有關打包時內存池中交易數量的知識,用戶在競標時會遇到困難。
在第二部分中,我們解釋了 ERC-4337 和 RIP-7560。然後,我們討論了為什麼簽名聚合更有可能發生在第 2 層解決方案上,而不是直接發生在第 1 層。我們展示了第 2 層解決方案如何解決用戶不同的方式可以實現不同的體驗。第一種方法是使用預言機向用戶發出信號,告知內存池中有多少交易,通過這種方法,用戶知道他們應該出價多少,並且可以迫使打包者製作更大的打包。第三種方法最簡單的就是L2作為一個捆綁器,把聚合工作外包給第三方,讓用戶支付費用。