Skip to content
所有選擇權指南
Ethereum 帳戶委派9 分鐘閱讀

EIP-7702:EOA 程式碼委派機制與風險

了解 EIP-7702 如何讓 EOA 指向已部署程式碼、type-4 授權簽署的內容,以及需要檢查的權限與風險。

本指南內容EIP-7702 改變執行路徑,不會取代私鑰

簡短摘要

EIP-7702 讓現有的外部擁有帳戶(EOA)設定一個指向已部署程式碼的標記。帳戶地址和私鑰維持不變,但針對該帳戶的呼叫可能會以帳戶權限執行這段程式碼。標準不保證權限受限或安全。簽署前請核對目標程式碼及其控制者。

EIP-7702 改變執行路徑,不會取代私鑰

一般 EOA 以私鑰簽署交易,帳戶自身地址上並沒有可執行程式碼。EIP-7702 讓 EOA 指向部署在其他地址的程式碼,並在該帳戶的執行脈絡中執行。程式碼位於另一地址,但使用的帳戶地址、餘額和儲存空間仍屬於委派方。這不是遷移到新的合約地址,也不是更換私鑰。

EIP-7702 規格定義 type-4 set-code 交易和 authorization list。Ethereum.org 的 Pectra 指南也把它描述成指向已部署程式碼的指標。錢包顯示「智慧帳戶」不代表你知道實際驗證規則、復原方法或委派程式碼。請查明誰可以修改程式碼,以及它可以如何使用帳戶資產和儲存空間。

type-4 交易包含另外簽署的授權清單

set-code 交易以類型位元組 0x04 識別。每個授權 tuple 包括 chain ID、程式碼地址、授權帳戶的 nonce 和該帳戶的簽署。授權帳戶簽署授權,發送者另外簽署外層交易;兩者可以是不同帳戶。

chain ID 通常把授權限制在單一鏈。值為 0 時,授權可在支援 EIP-7702 的鏈上適用,但不代表一定成功:nonce 和帳戶狀態仍須相符。請把簽署畫面上的網路、帳戶和完整目標地址與可信的區塊瀏覽器核對。Ethereum.org 交易文件說明 type-4 授權清單。它與智慧帳戶指南中的 ERC-4337 UserOperation 和 paymaster 不同。

委派標記指向程式碼,並不包含程式碼

EOA 程式碼中的標記由 0xef0100 前綴和目標地址組成。客戶端辨認標記後,在執行呼叫時載入該地址的程式碼。因此帳戶地址和程式碼地址不同,兩者都要核對。程式碼由目前使用的鏈載入;同一地址在其他鏈上可能有不同程式碼,也可能沒有程式碼。

委派程式碼在帳戶的執行脈絡中運作,亦可使用帳戶的儲存空間。視乎程式邏輯,它可能轉出 ETH 或代幣、呼叫外部合約及更改已儲存的資料。EIP-7702 不會自動加入「只准使用這種代幣」之類限制。若目標是 proxy,請核對管理者及升級權限。

委派程式碼可能掌握帳戶的廣泛權限

驗證有漏洞時,程式碼可能允許轉移資產、授權代幣、任意呼叫外部合約或更改儲存資料。EIP 的安全考慮提醒開發者將防重播、目標和 calldata、ETH 金額及 gas 條件綁定到授權簽署。欠缺這些限制時,代付方可能提交不同呼叫或令交易失敗。

請檢查帳戶可呼叫哪些合約、簽署如何驗證、誰掌握緊急或升級權限,以及已部署程式碼是否符合已驗證來源。審計標記不能證明授權要求中的確切地址和版本已受審查。若把代幣授權與兌換合併,請讀清楚兩項呼叫,並把授權額限制在需要的範圍。

外層交易失敗後,委派仍可能保留

EIP-7702 在執行外層交易前處理授權清單。規格指出,即使之後的執行失敗或 revert,已處理的委派標記亦不會回滾。因此失敗回執不代表帳戶已回復原狀。請分開檢查回執和帳戶目前的程式碼。

授權可能已生效,但之後的初始化呼叫失敗;此時設定尚未完成,委派仍可能生效。重試前請核對交易雜湊、授權帳戶、nonce 和程式碼指標。nonce 可能已改變,讓舊簽署失效。

移除委派不會清除其他狀態

新授權可以指向另一段程式碼。授權到 null address 會移除委派標記並清空帳戶程式碼,但不會清除儲存空間、ERC-20 合約中的 allowance、已完成轉帳或外部合約狀態。代幣授權需要另外檢查和撤銷。

新程式碼可能以不同方式解讀舊資料。更換前請檢查儲存配置和遷移計劃。代幣額度可參考代幣授權和 allowance 指南。若私鑰或助記詞外洩,移除程式碼不會復原私鑰;請參考錢包復原指南。

簽署前檢查鏈、目標和失敗後狀態

先查看錢包官方文件,確認錢包在所選網路支援 EIP-7702。核對 chain ID、帳戶、準確目標地址、已驗證程式碼及 proxy 管理者。分清授權簽署、外層交易發送者和費用支付者;有人代付不代表程式碼安全。

若委派已生效,除了交易狀態,也要檢查目前標記和程式碼地址。如與預期不同,暫停後續呼叫和授權。外層費用參考以太坊 Gas 費用指南,EOA nonce 和待處理交易參考待處理交易指南。

分清協議功能與錢包承諾

EIP-7702 標準化把 EOA 連接至已部署程式碼的交易格式。批次呼叫、代付費用、session 權限和復原功能取決於個別程式碼與服務。Ethereum Foundation 的 Pectra 主網公告介紹替換或撤銷授權;ERC-4337 UserOperation 和 paymaster 則是另一種機制。

「智慧帳戶」標籤不會告訴你誰持有私鑰、誰能升級程式碼或更改復原方式。修改有資產的帳戶前,先檢查實際實作、設定和網路支援。本文解釋機制,不推薦特定錢包或委派目標。

常見問題

Q1EIP-7702 會把 EOA 變成一般智能合約錢包嗎?

不會。它讓 EOA 委派呼叫至程式碼,但不會自動加入特定錢包政策、復原方式或權限系統。

Q2授權簽署和 type-4 交易簽署一樣嗎?

不一樣。授權帳戶簽署目標、chain ID 和 nonce;發送者另外簽署外層交易。

Q3移除委派會撤銷代幣授權嗎?

不會。代幣合約會獨立記錄 allowance。請透過代幣合約或可信錢包流程檢查和撤銷。

Q4委派目標需要檢查甚麼?

核對目前鏈上的確切地址和程式碼、已驗證來源、升級管理者,以及程式碼對帳戶資產和儲存資料的權限。

資料來源與延伸閱讀

回報問題

我們會準備一封包含本文連結的電子郵件。寄出後,Mark 才會收到你的回報

快速檢查

讀完指南後,用 3 道題檢查一下

問題 1 / 3

問題 01

有效授權處理後,外層執行失敗時可能出現甚麼情況?

選擇答案即可查看解釋

期權術語表