
撰文:0xjs@比特鏈視界
在2024年4月12日舉行的以太坊第183次ACDE會議中,EIP-3074正式被納入下一次以太坊硬分叉Pectra升級(簡稱布拉格升級)。
因此,EIP-3074得到以太坊社區關注。以太坊社區很多人認為,這個EIP將永遠改變用戶在EVM鏈上交互的方式,使錢包用戶體驗更簡單、更便宜、更強大。
那麼,什麼是EIP-3074 ?
EIP-3074是什麼?
一句話描述: EIP-3074本質上是將EOA的控制權委託給智能合約, 包括進行單次交易批准、批量交易、錢包資產恢復、贊助交易等的能力。
EIP-3074由以太坊研究員 Sam Wilson、Go Ethereum 開發者等人提出,通過添加兩個新的EVM操作碼AUTH 和 AUTHCALL,來將現有的EOA變成智能合約。這兩個操作碼協同工作,允許智能合約代表EOA行事。
AUTH 操作碼 (0xf6):此操作碼允許用戶通過檢查 ECDSA 籤名來授權特定的 EOA。籤名必須使用 EOA 的私鑰進行,並且需要覆蓋特定的消息(提交)。
AUTHCALL 操作碼 (0xf7):此操作碼允許授權的智能合約從 EOA 的帳戶開始交易。它的工作原理類似於已有的 CALL 操作碼,但使用授權的 EOA 作為發送者而不是合約本身。
AUTH 獲取用戶的籤名和預期操作,並驗證其籤名是否正確。它設置一個變量來說明 txn 的原始地址,允許一個智能合約代表一個 EOA 執行操作,從而實現了授權控制的委託。 AUTHCALL 然後使用發起者地址作為調用者而不是實際的 msg.sender 來調用目標合約。
EIP-3074工作流程和新用例
如下:
用戶籤署一條消息(鏈下,不是交易)—>用戶或發起人將消息作為交易發送到調用者合約—>調用者使用 AUTH 和 AUTHCALL 來驗證和調用每個目標合約用戶作為發件人的地址
這個新的交易流程中獲得了一些用例,例如:
用例1:贊助交易。假設Bob的錢包裡沒有任何 ETH。應用程式可以為 Bob 的交易提供 Gas,而不需要購買/橋接 ETH。這對於獲得大規模散戶採用可能是巨大的。
用例2:在一次交易中執行多個操作的能力。目前為了在 Uniswap 上交換代幣,用戶必須首先批准 Uniswap 使用自己的代幣,然後再運行實際的Swap。使用EIP-3074,這兩個操作可以批處理到單個交易中。
用例3:資產恢復。可以設置一個特殊的調用者合約,以便用戶在丟失私鑰時可以使用社交恢復來恢復資產。如果滿足社交恢復條件,則可以向調用者提交籤名以移動資產。
EIP-3074對以太坊意味著什麼?
EIP-3074之前:智能合約要求用戶在與智能合約交互時籤署交易。因此,用戶需要為每天執行的鏈上任務參與一些消息籤名。
EIP-3074之後:用戶可以籤署一次密鑰,並授予智能合約從用戶的錢包籤署交易的權限。用戶可以使用自己的密鑰籤署此許可,然後就可以開始了。它將成為 web3 遊戲的遊戲規則改變者,用戶可以在其中簽署一次會話,然後玩整個遊戲,而無需擔心與智能合約的交互。
不同於ERC-4337在合約層面的升級,EIP-3074的優勢在於從EVM指令層面進行升級 ,不需要特別額外設置即可讓用戶享受到智能合約的功能。比如上節提到的三個用例,都會大大提升以太坊用戶體驗。
說了那麼多優點,EIP-3074缺點呢
最大一個就是調用者。調用者合約需要經過全面審核、不可升級且無需信任,否則用戶的資金很容易被盜 。
此外,某些現有的重入檢查可能不適用於 EIP-3074。
由於EIP-3074添加了兩個新的操作碼,因此需要硬分叉來添加此更改。這是EIP-3074被推遲以及 ERC4337 被首先採用的部分原因 。
而帳戶抽象的ERC-4337不需要硬分叉,純粹是合約和鏈下系統改變。