經過3 年多的沉澱和改進,在以太坊第183 次ACDE 會議中,EIP-3074得到了以太坊社群的廣泛支持,正式被納入下一次以太坊硬分叉。 EIP-3074 由以太坊研究員Sam Wilson、Go Ethereum 開發者Matt Garnett等人提出,其核心在於讓任何一個外部擁有帳戶(EOA)都能像智能合約錢包一樣運作,無需部署額外的合約,無需手動遷移。如Paradigm CTOGeorgios Konstantopoulos所說「錢包使用者體驗將提升10 倍」。那麼EIP-3074 是怎麼做到這一點的呢?與ERC-4337 的差別是什麼?
EIP-3074 是對於EVM 的升級
外部擁有帳戶(EOA)由使用者直接控制和管理等以太坊上的一種帳戶類型,就是我們常用的助記詞錢包創建的帳戶,例如MetaMask。 EIP-3074 引入了兩個新的以太坊虛擬機器指令:AUTH 和AUTHCALL,使EOA 連接起一個智慧合約,並將交易的控制權交給智慧合約。
-
AUTH 指令:用於驗證一個ECDSA 簽名,並基於簽名結果設定一個上下文變數「authorized」。如果簽章有效,且簽署者位址符合給定的授權位址,則將「authorized」設定為授權位址。這樣,AUTH 指令允許一個智慧合約代表一個EOA 執行操作,從而實現了授權控制的委託。
-
AUTHCALL 指令:類似於現有的CALL 指令,用於執行一個外部呼叫。不同之處在於,AUTHCALL 會使用先前透過AUTH 指令設定的授權位址作為呼叫者位址。也意味著AUTHCALL 會使用授權的EOA 作為發送方,而不是合約本身。
整體流程是:使用者簽署授權訊息,Invoker 合約接收並驗證,Invoker 合約使用AUTH 和AUTHCALL 指令以EOA 的身份發送交易,代表使用者執行交易,而無需直接使用使用者的私鑰,然後返回結果給使用者。
與ERC-4337 的區別
ERC-4337 是協議層面的,不需要更改共識層,主要目標是實現帳戶抽象(Account Abstraction),允許智慧合約直接擁有資金,並具有類似於以太坊帳戶的功能。也就是讓智能合約帳戶具有EOA 主動發起交易的特性。
而EIP-3074 需要透過以太坊硬分叉來實施,主要目標是賦予EOA 類似智能合約的功能,將EOA 的控制委託給智能合約,使得智能合約可以代表用戶進行交易,並支持批量交易、贊助交易(即由第三方支付燃氣費用以執行交易)等功能。雖然它使得EOA 具備了智慧合約錢包的功能,但帳戶仍然是EOA。如果密鑰被盜,意味著完全遺失。 (除非設定一個特殊的合約專門用於帳戶恢復)
為什麼重要?
在多鏈的時代,為每條鏈都支援ERC-4337 需要大量的開發工作。而像EIP-7377提出的遷移交易,讓EOA 用戶將其帳戶遷移到智慧合約,是需要用戶手動發送一筆遷移交易。相較之下,EIP-3074 讓EOA 具備智慧合約的功能,可以在直接在所有鏈上使用,且不需要使用者手動去遷移。
相較於其他提案,EIP-3074 的優點在於簡潔高效,不需要額外的流程,即可讓使用者享受智慧合約的功能。先前以太坊社群會擔心EIP-3074 的技術安全問題,經過改進和測試之後,社群廣泛支援將EIP-3074 加入到下一次以太坊升級中,這將對以太坊生態系統中的多個領域產生影響。
例如,在DeFi 領域,EIP-3074 的大量交易功能將大大提升流動性提供者和交易者的效率,並降低參與成本。此外,透過授權使用者帳號執行交易,DeFi 應用程式可以作為贊助者的角色,為使用者支付Gas 費用,從而降低使用者使用DeFi 產品的門檻,促進DeFi 的大規模應用。
在全鏈遊戲領域,透過EIP-3074,使用者可以透過授權方式將帳戶操作的權限授予第三方(Invoker),從而避免了每次交易都需要用戶自己進行鏈上確認和支付Gas 費用的問題。遊戲開發者或其他第三方可以取代使用者執行交易,使用者只需要一次性授權即可,簡化了交易流程,提升了遊戲的流暢性。
潛在風險
在以太坊交易中,節點驗證人需要確切地知道交易的細節,以便正確地處理它們。這樣才能確保網路的安全和穩定性。在EIP-3074 中,允許智能合約代表EOA 執行交易,當涉及到贊助交易時,與其他合約或帳戶進行交互可能會改變交易執行前和執行後的帳戶狀態,使節點驗證人難以準確預測交易的影響,從而產生網路不一致的安全風險。
此外,雖然使用者可以透過簽名來授權第三方操作帳戶,但這也意味著第三方(Invoker)可以在一定程度上操作使用者的帳戶,這可能導致潛在的安全問題。如果第三方的權限被濫用或遭受駭客攻擊,使用者的資金和個人資訊可能會受到威脅。