Vitalik Buterin 最新提出了 EIP-7702 提案,這可能是以太坊歷史上影響最大的變化之一,本文就將介紹該新提案的有關工作原理以及實現其所需要了解的一切。
首先,EIP-7702 新提案出奇地簡短,這讓部分人感到困惑,不知道它到底如何運作,爲了理解 7702,我們首先要了解其中提到的另外三個提案:
讓我們從所有這些提案的共同目標「帳戶抽象」說起——以太坊上的 EOA(「普通」帳戶)很糟糕,它們風險很大,功能非常有限,而帳戶抽象則允許用戶使用智能合約作爲帳戶,以添加更多功能和安全性來解決這個問題。
EIP-4337 於 2023 年 3 月在主網上線,它允許用像帳戶一樣編寫智能合約,以便它們可以驗證和執行交易,這改進了許多用戶體驗(UX)。
自發布以來,EIP-4337 得到了廣泛的採用,主要由 Polygon 主導,而 Base 在過去幾個月中的相關活動也在增多。
EIP-4337 相關的最新創新來自 Coinbase 生態及 Coinbase 智能錢包,它基於生物識別技術,用戶體驗非常棒,我曾在上周末於 ETH Global Sydney 制作了另一個小型演示來展示這一點。
那麼 EIP-4337 存在什麼問題?爲什麼今天又有另一個帳戶抽象提案?因爲 EOA 仍然是迄今爲止使用最廣泛的帳戶類型。
除此之外,大多數 EIP-4337 的智能合約帳戶都由單個 EOA 籤署者控制,下面是示例代碼:
因爲無法將用戶的 EOA「轉換」爲智能合約帳戶,所以有這個奇怪的中間步驟解決方案——主要是由於 Web3 應用缺乏對連接智能合約帳戶的原生支持,如今大多數人仍通過 MetaMask 等插件錢包使用 EOA。
這引出了我們的下一個提案:EIP-3074。
實際上,這個提案是在 EIP-4337 之前提出的,但是它尚未合並到主網,EIP-3074 試圖賦予 EOA 更多權力,允許他們將其 EOA 的控制權委托給智能合約。
該提案概述了以下內容,添加兩個新的操作碼:
這實現了與 EIP-4337 許多相同的用例,而無需每個用戶部署新的智能合約。一個關鍵的區別在於交易來自用戶的 EOA,而不是一個沒有用戶任何帳戶歷史記錄、ETH、NFT、代幣等的新合約。
對 EIP-3074 的一個常見反應是「如果有人制定惡意合約並且用戶委托給他們怎麼辦?」,畢竟委托給惡意合約可能會導致用戶的錢包裏的所有加密資產都被抽走。
解決這個問題的方法是錢包服務提供商甚至不允許用戶對任何合約進行授權,他們可能會保留一份用戶可以委托授權的智能合約白名單列表,並且此列表之外的任何合約都不會顯示給用戶。
EIP-3074 委托的一個關鍵點是委托並非永久性的,「EOA 的單個交易會導致 nonce 增加,從而使未完成的授權失效」。
實質上,在用戶進行新交易後,委托將不再有效。
我們也確實不想賦予 EOA 更多權力。畢竟,這些提案的目標是將用戶從 EOA 轉移到智能合約帳戶,那麼我們爲什麼要向 EOA 添加功能呢?
這很好地引出了我們的下一個提案:EIP-5003。EIP-5003 添加了另一個操作碼「AUTHUSURP」,它將代碼部署在 EIP-3074 授權地址。
EIP-3074 和 EIP-5003 兩者的區別在於:
EIP-3074 + EIP-5003 的一個大問題是它與通過 EIP-4337 的當前帳戶抽象方案不太兼容,所以以太坊社區的一些人擔心我們會通過這兩種類型的帳戶抽象「創建兩個獨立的代碼生態系統」。
這就到了 Vitalik Buterin 今天的提議:EIP-7702——他提議修改 EIP-3074,使其更精簡並與 EIP-4337 更兼容,這樣我們就不會最終得到兩個獨立的帳戶抽象生態系統,還將 EIP-5003 視爲永久遷移的下一步。
EIP-7702 提出了一種同時接受 contract_code 和籤名字段的新交易類型,在開始執行交易時,它將籤名者帳戶的合約代碼設置爲 contract_code。在交易結束時,它會將代碼重新設置爲空。
這和 EIP-3074 一樣,實現了 EOA 對智能合約的臨時委托功能。然而 EIP-7702 並沒有引入新的操作碼(這需要硬分叉),而是定義了要調用的函數:
具體來說,它:
「合約代碼」 就是字面意思,智能合約的代碼就存儲在「合約代碼」中。由於 EOA 本身不是合約,所以這個字段通常是空的。然而 EIP-7702 的巧妙之處在於,它會在交易執行期間臨時將一些智能合約代碼填充到該字段中。
這是一種爲您的 EOA 提供新行爲(代碼形式)的方式,用於執行此特定交易,下一步是使之成爲永久性的行爲改變,只需選擇「在交易結束後不將代碼設置爲空」。
該提案最棒的一點之一是,它與迄今爲止爲 EIP-4337 構建的所有帳戶抽象工作高度兼容,「用戶需要籤名的合約代碼實際上可以是現有的 EIP-4337 錢包代碼」。
一旦此項改動生效,用戶現有的 EOA 就可以執行任何智能合約代碼。通過額外的 EIP,EOA 還可以永久升級以運行特定的代碼。
假以時日,這可能會徹底改變我們所有人與 Web3 應用的交互方式。
本文轉載自[panews],原文標題“探究EIP-7702提案:Vitalik爲帳戶抽象難題開出的終極藥方?”,著作權歸屬原作者[Foresight News],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。
Vitalik Buterin 最新提出了 EIP-7702 提案,這可能是以太坊歷史上影響最大的變化之一,本文就將介紹該新提案的有關工作原理以及實現其所需要了解的一切。
首先,EIP-7702 新提案出奇地簡短,這讓部分人感到困惑,不知道它到底如何運作,爲了理解 7702,我們首先要了解其中提到的另外三個提案:
讓我們從所有這些提案的共同目標「帳戶抽象」說起——以太坊上的 EOA(「普通」帳戶)很糟糕,它們風險很大,功能非常有限,而帳戶抽象則允許用戶使用智能合約作爲帳戶,以添加更多功能和安全性來解決這個問題。
EIP-4337 於 2023 年 3 月在主網上線,它允許用像帳戶一樣編寫智能合約,以便它們可以驗證和執行交易,這改進了許多用戶體驗(UX)。
自發布以來,EIP-4337 得到了廣泛的採用,主要由 Polygon 主導,而 Base 在過去幾個月中的相關活動也在增多。
EIP-4337 相關的最新創新來自 Coinbase 生態及 Coinbase 智能錢包,它基於生物識別技術,用戶體驗非常棒,我曾在上周末於 ETH Global Sydney 制作了另一個小型演示來展示這一點。
那麼 EIP-4337 存在什麼問題?爲什麼今天又有另一個帳戶抽象提案?因爲 EOA 仍然是迄今爲止使用最廣泛的帳戶類型。
除此之外,大多數 EIP-4337 的智能合約帳戶都由單個 EOA 籤署者控制,下面是示例代碼:
因爲無法將用戶的 EOA「轉換」爲智能合約帳戶,所以有這個奇怪的中間步驟解決方案——主要是由於 Web3 應用缺乏對連接智能合約帳戶的原生支持,如今大多數人仍通過 MetaMask 等插件錢包使用 EOA。
這引出了我們的下一個提案:EIP-3074。
實際上,這個提案是在 EIP-4337 之前提出的,但是它尚未合並到主網,EIP-3074 試圖賦予 EOA 更多權力,允許他們將其 EOA 的控制權委托給智能合約。
該提案概述了以下內容,添加兩個新的操作碼:
這實現了與 EIP-4337 許多相同的用例,而無需每個用戶部署新的智能合約。一個關鍵的區別在於交易來自用戶的 EOA,而不是一個沒有用戶任何帳戶歷史記錄、ETH、NFT、代幣等的新合約。
對 EIP-3074 的一個常見反應是「如果有人制定惡意合約並且用戶委托給他們怎麼辦?」,畢竟委托給惡意合約可能會導致用戶的錢包裏的所有加密資產都被抽走。
解決這個問題的方法是錢包服務提供商甚至不允許用戶對任何合約進行授權,他們可能會保留一份用戶可以委托授權的智能合約白名單列表,並且此列表之外的任何合約都不會顯示給用戶。
EIP-3074 委托的一個關鍵點是委托並非永久性的,「EOA 的單個交易會導致 nonce 增加,從而使未完成的授權失效」。
實質上,在用戶進行新交易後,委托將不再有效。
我們也確實不想賦予 EOA 更多權力。畢竟,這些提案的目標是將用戶從 EOA 轉移到智能合約帳戶,那麼我們爲什麼要向 EOA 添加功能呢?
這很好地引出了我們的下一個提案:EIP-5003。EIP-5003 添加了另一個操作碼「AUTHUSURP」,它將代碼部署在 EIP-3074 授權地址。
EIP-3074 和 EIP-5003 兩者的區別在於:
EIP-3074 + EIP-5003 的一個大問題是它與通過 EIP-4337 的當前帳戶抽象方案不太兼容,所以以太坊社區的一些人擔心我們會通過這兩種類型的帳戶抽象「創建兩個獨立的代碼生態系統」。
這就到了 Vitalik Buterin 今天的提議:EIP-7702——他提議修改 EIP-3074,使其更精簡並與 EIP-4337 更兼容,這樣我們就不會最終得到兩個獨立的帳戶抽象生態系統,還將 EIP-5003 視爲永久遷移的下一步。
EIP-7702 提出了一種同時接受 contract_code 和籤名字段的新交易類型,在開始執行交易時,它將籤名者帳戶的合約代碼設置爲 contract_code。在交易結束時,它會將代碼重新設置爲空。
這和 EIP-3074 一樣,實現了 EOA 對智能合約的臨時委托功能。然而 EIP-7702 並沒有引入新的操作碼(這需要硬分叉),而是定義了要調用的函數:
具體來說,它:
「合約代碼」 就是字面意思,智能合約的代碼就存儲在「合約代碼」中。由於 EOA 本身不是合約,所以這個字段通常是空的。然而 EIP-7702 的巧妙之處在於,它會在交易執行期間臨時將一些智能合約代碼填充到該字段中。
這是一種爲您的 EOA 提供新行爲(代碼形式)的方式,用於執行此特定交易,下一步是使之成爲永久性的行爲改變,只需選擇「在交易結束後不將代碼設置爲空」。
該提案最棒的一點之一是,它與迄今爲止爲 EIP-4337 構建的所有帳戶抽象工作高度兼容,「用戶需要籤名的合約代碼實際上可以是現有的 EIP-4337 錢包代碼」。
一旦此項改動生效,用戶現有的 EOA 就可以執行任何智能合約代碼。通過額外的 EIP,EOA 還可以永久升級以運行特定的代碼。
假以時日,這可能會徹底改變我們所有人與 Web3 應用的交互方式。
本文轉載自[panews],原文標題“探究EIP-7702提案:Vitalik爲帳戶抽象難題開出的終極藥方?”,著作權歸屬原作者[Foresight News],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。