| timezone | UTC+8 |
|---|
请在上边的 timezone 添加你的当地时区(UTC),这会有助于你的打卡状态的自动化更新,如果没有添加,默认为北京时间 UTC+8 时区
- 自我介绍
- 你认为你会完成本次残酷学习吗?
- 你的联系方式(推荐 Telegram)
- Alan 工作经验: 5年 技术栈: Solidity Golang
多年web3智能合约开发经验,用Solidity开发过EVM生态DEFI、 NFT 、Dapp,对web3特别感兴趣 2. 会完成 3. @JudasLuo
以太坊區分兩種帳戶類型: (1) Externally Owned Accounts (EOAs) 外部擁有帳戶; (2) Smart Contract Accounts 智能合約帳戶。 EIP 7702 提議允許 EOA(外部擁有帳戶) 擁有程式碼。此變更將使以太坊更接近帳戶抽象化,透過允許 EOA 批次處理操作、實作原生多重簽名或替代簽名方案,但也引入了新的安全風險,如果實作沒有經過仔細設計和審計。 EIP 7702 的核心是引入一種新的交易類型,允許帳戶在自身上設定和委派程式碼。它不是直接將完整的合約程式碼儲存在帳戶上,而是儲存一個委託指示符 delegation designator,它是一個特定的前綴,後跟一個地址 ( (0xef0100 || address) ),這個指標指示實際的智能合約程式碼在鏈上的位置。簡單來說,錢包將指向一個鏈上的智能合約,而該合約的邏輯決定了帳戶的行為方式。 EIP 7702 代表了以太坊帳戶模型的一個重大演變。透過允許 EOA 納入程式碼,它開啟了更豐富功能的可能性,例如批次交易、gas 贊助和可自訂的邏輯。然而,這種增加的靈活性是以增加攻擊面為代價的,其中存在許多潛在的漏洞。 開發人員在將此 EIP 整合到其協議之前需要考慮的風險: (1) 缺乏存取控制; (2) 初始化挑戰; (3) 儲存體衝突。
EIP-7702 引入了一種新的交易類型,允許外部擁有帳戶 (EOA) 指定一個地址作為指向其實現的指標。例如,這個地址可以是一個通用的代理或最小代理合約,將呼叫訊息轉發到一個可升級的錢包實現。
EIP-7702 有效地將 EOA 升級為像智能合約錢包一樣運作,為 EOA 使用者解鎖了可程式性和可組合性,並啟用了以下功能: (1)社交恢復:EIP-7702 支援 EOA 使用者的社交恢復。這對於害怕遺失私鑰的使用者特別有利,他們只需透過簡單的社交恢復設定即可克服這個問題。 (2)交易批次處理:使用者可以透過擺脫傳統的 ERC-20 代幣「批准和轉帳」兩步驟授權模型,或進一步批次發送轉帳,來簡化交易流程。 (3)交易贊助:使用者可以將交易執行和 gas 費用支付延遲給第三方,例如排序器或錢包伺服器。此功能為可能沒有用於 gas 支付的原生代幣的使用者提供了便利。 (4)任意簽署金鑰:錢包可以利用各種金鑰類型(例如 WebAuthn、P256、BLS 等)來驗證操作,從而在設計空間中提供更大的靈活性。 (5)會話金鑰:使用者可以將具有生命週期和範圍權限的會話金鑰委託給金鑰託管服務,從而實現訂閱模式。此外,使用者可以在受限制的「沙盒」環境中與 DApp 互動,透過防止惡意行為者存取其完整的錢包或資產,顯著降低網路釣魚攻擊的風險和影響。 (6)自定義 gas 代幣、多重簽名方案的權限控制等等…
透過 EIP-7702,從 EOA 的角度來看,ETH 餘額現在不僅可以透過簽署的交易減少,還可以透過觸發合約執行的交易減少。從智能合約的角度來看,EOA 可以直接發送交易來更改帳戶狀態。這引入了以下考量: (1)過去,EOA 只能透過簽署交易發送 ETH,這使得交易池可以透過檢查新區塊中發送者的餘額來使發送者餘額不足的待處理交易失效。然而,透過 EIP-7702,委派的程式碼可以隨時修改 EOA 的餘額,這使得這種不變性不相容,需要重新考慮相關的交易池邏輯。 (2)EIP-7702 錢包實作不能依賴本地維護的不變性,並且必須查詢真實的帳戶狀態,因為 EOA 可以隨時發起交易來改變他們的餘額。
儘管智能合約錢包生態系統取得了巨大進展,但 EOA 阻礙了跨應用程式的 UX 改善的廣泛採用。因此,EIP-7702 著重於為 EOA 增加短期功能改進,這將使 UX 改善滲透到整個應用程式堆疊中。EIP-7702 圍繞設計的三個特定功能是: (1)批次處理:允許來自同一使用者的多個操作在一個原子交易中進行。一個常見的例子是 ERC-20 批准,然後花費該批准。這是 DEX 中常見的工作流程,目前需要兩筆交易。批次處理的高級用例偶爾涉及依賴關係:第一個操作的輸出是第二個操作的輸入的一部分。 (2)贊助:帳戶 X 代表帳戶 Y 支付交易費用。帳戶 X 可以因這項服務而獲得一些其他 ERC-20 的支付,或者它可以是免費包含其使用者交易的應用程式營運商。 (3)權限降級:使用者可以簽署子金鑰,並授予它們比全域存取帳戶弱得多的特定權限。例如,花費 ERC-20 代幣但不花費 ETH 的權限,或每天花費不超過總餘額的 1% 的權限,或僅與特定應用程式互動的權限。
EIP-7702:為單一交易設定 EOA 帳戶程式碼新增一種新的交易類型,可以在一次交易執行期間設定 EOA 的程式碼。
此 EIP 引入了一種新的交易類型,允許外部擁有的帳戶 (EOA) 在一次交易中擁有智能合約代碼。
簡單來說,在執行此類型的交易期間,EOA 將充當智能合約/智能錢包,並且在交易執行後,它將變回沒有代碼的原始 EOA。

EOA 使用者錢包簽署 contract_code 並在交易中提供簽名。驗證此簽名後, contract_code 會儲存在 EOA 中,並且在整個交易過程中,它會像一個智能合約一樣運作。交易執行後,程式碼會被清空,而 EOA 再次像普通帳戶一樣運作。 EOA 在交易期間升級為「supercharged EOAs」。