EIP-3074被纳入以太坊布拉格升级 三分钟读懂EIP3074
撰文: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不需要硬分叉,纯粹是合约和链下系统改变。