帳戶抽象 EIP-3074 成為以太坊社群爭論點,Vitalik 拋出新改進方案 EIP-7702
近期以太坊社群針對未來將納入 Pectra 升級的帳戶抽象提案 EIP-3074 有不少的爭論,包含 Vitalik 等人在內的反對方認為其對於未來的相容性有疑慮,因此昨日 Vitalik 直接提出一個新的方案 — EIP-7702。
背景知識:帳戶抽象
帳戶抽象:提升區塊鏈使用者體驗
帳戶抽象 (Account Abstraction, AA) 是以太坊針對區塊鏈互動過程中的使用者體驗改進方向,帳戶抽象是指將用戶與區塊鏈互動的方式優化,使操作變得更加容易與實用,期待可以藉此迎來大規模採用。
到底帳戶抽象如何提升使用者體驗?舉例來說:
廣告 - 內文未完請往下捲動
- 批量交易:允許同一使用者在一個原子交易中進行多個操作。舉例來說在去中心化交易所上,用戶可以同時完成批准與交易。
- 贊助交易:第三方帳戶可以代表交易帳戶支付交易燃料費用,可以用於專案對於使用者的補貼。
- 權限管理:使用者可以簽署子金鑰,並授予特定權限。例如用戶可以使用給出某個 ERC-20 代幣的使用權限但不包含 ETH 使用的權限,或是每日最高花費總額,或限定僅能與特定應用程式互動。
推薦閱讀:意圖導向設計 intent-centric|創投 NGC 彙整產業趨勢
推薦原因:帳戶抽象是意圖導向設計的第一步,該文章從意圖導向設計與帳戶抽象的意涵與重要性出發,講述現有技術的實作方向與區塊鏈結合的具體作法,並且盤點產業主流專案的技術介紹與發展現狀,建議對此領域不熟悉的讀者閱讀。
隨著以太坊網路安全性與去中心化等重要議題逐漸獲得解決,使用者體驗的提案因此近期漸漸被搬上檯面討論。包含 EIP-2938、EIP-3074、EIP-4337 等提案都是重點提案。
ERC-4337 被視為終局但開發周期長
EIP-4337 引入 User Operations 的概念,讓智能合約錢包 (smart contract wallet) 可以自定義交易功能,例如贊助交易或是批量交易。
User Operations 會進入替代內存池 (alt mempool),後者是 EIP-4337 創造的一個新的內存池,以原有的一般交易與內存池分開。
不過要實做 ERC-4337 甚至到可以大規模採用的光景,還需要很多的努力,包含基礎設施的設計、用戶錢包的手動更新等等。
EIP-3074 的載浮載沉
EIP-3074 預期加入兩個新的操作碼 (opcode):AUTH 和 AUTHCALL,讓 EOA 能透過這兩個操作碼授權合約 (invokers) 代替自身去呼叫外部其他合約與互動。也就是讓現行的 EOA 擁有智能合約功能的意思。
推薦閱讀:以太坊下次更新的 EIP-3074 是什麼?如何做到帳戶抽象?
推薦原因:該文章介紹 EIP-3074 基本的運作原理還有與 EIP-4337 的差異點,可以對於原理背後所帶來的潛在風險有更多理解。
EIP-3074 雖然早在三年前被提出,但是後來出現 EIP-4337 這個「最終」的完美解決方案,讓前者淡出社群視野。
近期因為使用者體驗的重要性逐漸增加,且其他公鏈的競爭逐漸加快,但是若要實做出 EIP-4337 並且順利在以太坊主網路上運作,仍需要許多的開發工作與資源。以太坊社群則認為應該可以先實做 EIP-3074。
EIP-3074 可以使外部擁有帳戶 (EOA) 能像智能合約錢包一樣運作,過程無需部署額外的合約,用戶也不需要手動升級,以太坊社群因此將之納入下一次的硬分叉升級之中。
EIP-3074 爭議不斷
雖然目前已經被安排至 Pectra 升級,但其實 EIP-3074 的爭議其實不小,甚至 Vitalik 也公開反對。
EIP-3074 爭議點
Vitalik 指出 EIP-3074 存在未來更新相容性問題:
- 引入的兩個操作碼 AUTH 和 AUTHCALL 在 Vitalik 認為終局的帳戶抽象提案 EIP-4337 是沒有且不需要的。
- EIP-3074 呼叫者合約的生態系統的發展,可能會與智能合約錢包生態系統分開,導致技術分散。
- 另外也有社群成員 Yoav Weiss 指出 EIP-3074 需要完全信任 invokers 合約,增加信任風險,也需要因此延後抗審查的 Inclusion Lists 機制。
Vitalik 認為 EIP-3074 可以視為是 EOA 的擴充而非必要,如果對於以太坊未來發展有負面影響那乾脆不要。
支持 EIP-3074 的一方表示:「延後或刪除 EIP-3074 的人,往往認為以太坊使用者體驗雖然不理想但目前還不錯。」如果沒辦法在下次 Pectra 更新中有意義的提升以太坊的使用者體驗,可能會落後其他競爭者。
EIP-3074 最大的爭議點其實就是「EIP-4337 是否為以太坊最適合的終局?」如果答案是肯定的,那麼就該反對 EIP-3074;如果答案是否定的則該支持。
不過上述這樣的論述過於狹隘,該問題無法解決社群的爭議,Vitalik 深知此道理而不僅是打打嘴皮子還直接實做出新的方案,這才讓 EIP-3074 的爭議得以繼續討論下去。
Vitalik 提出 EIP-7702 欲取代 EIP-3074
EIP-7702 的設計會藉由呼叫 EOA,取代掉 EIP-3074 所需要使用的兩個操作碼 AUTH 和 AUTHCALL:
- AUTH 將會被替換為呼叫 verify,設定 authorized[msg.sender, …]
- AUTHCALL 將被替換為呼叫 execute,驗證 authorized[msg.sender, …] 並執行。
該提案內容表示此兩個小小的改動,將可以避免 EIP-3074 為協議後續更新帶來潛在的負面影響。
EIP-7702 的目的是實現 EIP-3074 的所有用例,而卻沒有這兩個可能帶來問題的 opcode。
以太坊未來發展可能納入 EIP-7702?
現在出現除了單純支持與反對 EIP-3074 的第三種方案 — EIP-7702,若其確實可以同時解決「以太坊需要快速有效的使用者體驗解決方案」與「不影響未來 EIP-4337 與其他協議發展的進程」,或許將會變成社群有共識的方向。
目前該提案仍在討論中,或許可以期待下一次的以太坊 ACDE 會議掌握最新進展。
不過無論如何,以太坊社群確實仍在嘗試以最好的方式進步,這點無庸置疑。